static关键字
可以用来修饰:属性、方法、代码块、内部类
静态变量
public static int num
- 会被类中的所有实例共享,随着类的加载而加载,静态变量的加载早于对象的创建!!!
- 由于类只会加载一次,则静态变量在内存中也只会存在一份,存在方法区的静态域中
- 实例变量:每个对象都独立的拥有一套类中的非静态属性,修改其中的一个时不会对其他对象中同样的属性进行修改(在类的加载之后,随着对象的加载而加载)
Student stu = new Student();
- 推荐使用
Student.num
调用(类名.属性名),对象名.属性名也可以 直接使用变量名也可以
静态方法
- 通过类.方法()调用 或直接用 方法()
- 静态方法中只能调用静态方法或属性
- 非静态方法中,既可以调用静态方法也可以调用非静态方法或属性
- 在静态方法中,不能使用this、super关键字
何时声明静态方法和静态变量
- 静态变量:
- 属性可以被多个对象所共享,不会随着对象的不同而不同
- 类中的常量也通常声明为static
- 静态方法:
- 操作静态属性的方法,通常设置为static
- 工具类中的方法,习惯上声明为static。比如Math、Arrays、Collections
static final
- 用来修饰属性:全局常量
静态代码块
classPerson{
{
匿名代码块
// 一般用来赋初值
}
{
静态代码块
// 对象创建的时候只执行一次
}
}
导入包里面的静态方法
正常应该是
import java.lang.Math;
Sysytem.out.println(Math.random());