目录
静态变量与成员变量的区别
1、两个变量的生命周期不同 成员变量随着对象的创建而存在,随着对象被回收而释放。 静态变量随着类的加载而存在,随着类的消失而消失。 2、调用方式不同 成员变量只能被对象调用。 静态变量可以被对象调用,还可以被类名调用。 3、别名不同 成员变量也称为实例变量,成员变量-对象的特有属性 静态变量也称为类变量,静态变量-对象的共有属性 类成员 4、数据存储位置不同 成员变量存储在堆内存的对象中,所以也叫对象的特有数据。 静态变量数据存储在方法区(共享数据区)的静态区,所以也叫对象的共享数据。
举个例子:
public class Test {
public static void main(String[] args) {
A a=new A();
System.out.println(a==a.a);
System.out.println(a.a==a.a.a);
}
}
class A{
A a=new A();
}
编译不报错,但是运行报错:
这是“栈溢出”的错误,原因是构造函数一直在进栈