来源:http://www.runoob.com/java/java-variable-types.html
所有变量在使用前必须先声明。
java支持的变量类型:类变量、实例变量和局部变量。
1、局部变量:类的方法中的变量
(1)局部变量声明在方法、构造方法或语句块(主函数)中。
(2)局部变量在方法、构造方法、语句块被执行时创建,当执行完之后,变量将会销毁。
(3)访问修饰符不能用于局部变量。
(4)局部变量是在内存空间的栈上分配的。
(5)局部变量没有默认值,所以局部变量被声明后,必须经初始化才能使用。
2、实例变量:独立于方法之外的变量,没有static修饰(与类变量的区别)。
(1)在类中声明,但在方法、构造方法和语句块之外。在内存的堆中分配。
(2)当对象被实例化(new之后)后,每个实例变量的值就被确定了;在对象创建时创建,在对象被销毁时销毁。(也就是实例变量属于该类的对象)
(3)实例变量可以声明在使用前或使用后,实例变量的值应该至少被一个方法、构造语句或者语句块引用,这样外部能访问这些方式获取实例变量信息。
(4)访问修饰符可以修饰实例变量,通过使用访问修饰符可以使实例变量对子类可见。
(5)实例变量具有默认值。数值型变量的默认值为0,布尔型为false,引用类型变量的默认值是null。
(6)在类的方法中,实例变量可以直接通过变量名访问。而在主函数中,必须通过实例化对象之后通过对象来访问。
3、类变量(静态变量):独立于方法之外的变量,用static修饰。
(1)在类中以static关键字声明,但必须在方法、构造方法或语句块之外。在内存空间的方法区(静态存储区)分配。(另外,所有的方法都在静态存储区)。
(2)类只拥有对类变量的拷贝。可以通过类名直接访问。(静态变量属于类,该类不产生对象)
(3)静态变量除了被声明为常量之外很少使用。常量是指声明为public/private、final和static类型的变量。常量初始化后不可改变。
(4)静态变量储存在静态存储区。经常被声明为常量,很少单独使用static声明变量。
(5)静态变量在程序开始时创建,结束时销毁。为了对类的使用者可见,大多数静态变量声明为public类型。
(6)静态变量具有默认值。数值型变量的默认值为0,布尔型为false,引用类型变量的默认值是null。静态变量的值除了在声明和构造方法中指定,还能在静态语句中初始化。