Class Variables :类变量,静态变量
Instance Variables:实例变量,非静态变量,位于类中,方法体外
local Variables:局部变量,位于方法体内,必须定义初始化值。
类的静态变量在内存中只有一个,java虚拟机在加载类的过程中为静态变量分配内存,静态变量位于方法区,被类的所有实例共享。静态变量可以直接通过类名进行访问,其生命周期取决于类的生命周期。 而实例变量取决于类的实例。每创建一个实例,java虚拟机就会为实例变量分配一次内存,实例变量位于堆区中,其生命周期取决于实例的生命周期。
1.调用方式 静态变量也称为类变量,可以直接通过类名调用。也可以通过对象名调用。这个变量属于类。 成员变量也称为实例变量,只能通过对象名调用。这个变量属于对象。 2.存储位置 静态变量存储在方法区长中的静态区。 成员变量存储在堆内存。
局部变量位于栈中。 3.生命周期 静态变量随着类的加载而存在,随着类的消失而消失。生命周期长。 成员变量随着对象的创建而存在,随着对象的消失而消失。
局部变量生命周期只限于方法被放在栈上这段期间,也就是方法调用至执行完毕为止。 4.与对象的相关性 静态变量是所有对象共享的数据。 成员变量是每个对象所特有的数据。
5.例子
public class Temp { int t; //实例变量 public static void main(String args[]){ int t=1; //局部变量 System.out.println(t ); //打印局部变量 Temp a= new Temp(); //创建实例 System.out.println(a.t ); //通过实例访问实例变量 } }
结果为: 1 0 (成员变量具有缺省值 而局部变量则没有 )
把代码改为
public class Temp { static int t; //类变量 public static void main(String args[]){ System.out.println( t ); //打印类变量 int t=1; //局部变量 System.out.println( t ); //打印局部变量 Temp a= new Temp(); //创建实例 System.out.println( a.t ); //通过实例访问实例变量 } }结果则为 0 1 0
链接:http://blog.csdn.net/liangzhongqin/article/details/6401611
http://www.cnblogs.com/huyuyu/p/6392987.html