静态成员会随着类的加载而进入方法区内存,静态成员使用时可直接用类名调用,也可用对象调用。
public class People {
// 成员变量
public static String country = "中国";
public String name;
}
//类名调用
System.out.println(People.country);
//对象调用
System.out.println(new People().country);
而没有被static修饰的成员,称为实例成员,实例成员的使用必须要依赖对象去调用。
静态变量内存机制
静态变量在内存中只有一份数据在方法区中,不管在内存中该类有几个对象,静态变量的数据也只有一份数据,适合做共享数据。
非静态变量(实例变量)随着对象在内存中创建而存在,该类有几个对象就有几份非静态变量的数据。
静态方法
调用同静态变量,代表如工具类:数组工具类Arrays,数学工具类Math
静态代码块
执行特点:随着类加载到内存,会执行一次。(类加载到方法区初始化的时候就会执行静态代码块)
作用:可以对静态变量,或者静态常量进行初始化值
class MyMath{
//静态常量PI
public static final double PI;
static {
//静态常量赋值,不能在局部方法中赋值
PI = 3.14;
}
}