实例变量:只有在创建了实例对象之后才会被分配空间,才可以使用
静态变量:不需要创建实例对象就可以直接使用类名进行引用
**
public class Different {
public static int staticInt = 0;//静态变量
public int insInt = 0;//实例变量
public Different() {
staticInt++;
insInt++;
System.out.println("静态变量" + staticInt + " 实例变量" + insInt);
}
public static void main(String[] args) {
System.out.println(Different.staticInt);
// System.out.println(Different.insInt);//实例变量在创建实例对象之前没有被分配空间,报错
Different different1 = new Different();
Different different2 = new Different();//静态变量的值在创建实例对象时不会被重新声明;而实例变量在创建实例对象的过程中被重新声明了
different1.insInt = 8;
different1.staticInt = 8;
Different different3 = new Different();
}
}
运行结果:
0
静态变量1 实例变量1
静态变量2 实例变量1
静态变量9 实例变量1
概念:
- 静态变量:独立存在的变量,只是位置放在某个类下,可以直接类名加点调用静态变量名使用。并且是项目或程序一启动运行到该类时就直接常驻内存,不需要初始化类再调用改变量。用关键字static声明。静态方法也是这样,可以直接调用
- 实例变量:就是相当于该类的属性,需要先初始化该类,就是new该类后,才可以调用。但是该类未被再次使用,被垃圾回收后,该实例也将不存在了,就是不在内存中了。
区别:
- 存储区域不同:静态变量存储再静态存储区,普通变量存储再堆中;
- 静态变量与类相关,普通变量则与实例相关
- 内存分配方式不同
- 声明周期不同