变量分为全局变量(也叫实例变量),类变量(也叫静态变量) 和局部变量。
全局变量:从属于实例(也叫对象),一般定义在类中,独立于类的方法,构造器,静态代码块等
全局变量可以不定义初始值,在使用new关键字创建对象时,自动初始化,引用类型为null,int类型为0;生命周期随对象的创建而创建,随对象的消失而消失,jvm内存中存放在堆中,在jvm类加载器加载的准备阶段赋默认值(引用类型为null,int类型为0),在初始化阶段赋自己定义的值,有多少个对象就有多少个全局变量
类变量:从属于类,static关键字修饰 , jvm内存中存放在静态方法区,静态变量随着程序的开始和结束而开始和结束。
不管new了多少个对象,只有一个类变量,因为类只有一个
局部变量:定义在方法、构造器或者代码块中使用,在方法、构造器或者代码块进入时被创建,一旦退出该变量就会被销毁,
局部变量必须定义值,jvm不自动初始化默认值,在jvm类加载器加载的初始化阶段 赋定义的值,jvm内存中存放在栈中(严格说存放在栈的一个栈帧中的局部变量表)