实例变量:只有在创建了实例对象之后才会被分配空间,才可以使用
    静态变量:不需要创建实例对象就可以直接使用类名进行引用
    **

    1. public class Different {
    2. public static int staticInt = 0;//静态变量
    3. public int insInt = 0;//实例变量
    4. public Different() {
    5. staticInt++;
    6. insInt++;
    7. System.out.println("静态变量" + staticInt + " 实例变量" + insInt);
    8. }
    9. public static void main(String[] args) {
    10. System.out.println(Different.staticInt);
    11. // System.out.println(Different.insInt);//实例变量在创建实例对象之前没有被分配空间,报错
    12. Different different1 = new Different();
    13. Different different2 = new Different();//静态变量的值在创建实例对象时不会被重新声明;而实例变量在创建实例对象的过程中被重新声明了
    14. different1.insInt = 8;
    15. different1.staticInt = 8;
    16. Different different3 = new Different();
    17. }
    18. }

    运行结果:

    1. 0
    2. 静态变量1 实例变量1
    3. 静态变量2 实例变量1
    4. 静态变量9 实例变量1

    概念:

    1. 静态变量:独立存在的变量,只是位置放在某个类下,可以直接类名加点调用静态变量名使用。并且是项目或程序一启动运行到该类时就直接常驻内存,不需要初始化类再调用改变量。用关键字static声明。静态方法也是这样,可以直接调用
    2. 实例变量:就是相当于该类的属性,需要先初始化该类,就是new该类后,才可以调用。但是该类未被再次使用,被垃圾回收后,该实例也将不存在了,就是不在内存中了。

    区别:

    1. 存储区域不同:静态变量存储再静态存储区,普通变量存储再堆中;
    2. 静态变量与类相关,普通变量则与实例相关
    3. 内存分配方式不同
    4. 声明周期不同