Java静态变量和实例变量区别——面试

主要从以下几个方面来解释:

1.定义不同:

静态变量被static关键字修饰,                                                                                         

实例变量前则不加;

2.初始化不同:

静态变量在类加载时初始化;

实例变量在创建类的实例时初始化;

3.所属不同:

静态变量不属于某个实例对象,而是属于类,也叫类变量

实例变量是属于某个实例对象的,也叫对象变量

4.存储区域不同:

静态变量存储在静态存储区中;

实例变量存储在堆栈中;

5.内存分配方式不同:

静态变量,随着类的加载而加载,只要程序加载了类的字节码,不用创建任何实例对象,静态变量就会被分配空间,静态变 量就可以被使用了;

实例变量,只有在创建实例对象后,实例变量才会被分配空间,才可以被使用。

6.调用方式不同:

静态变量可以通过类名直接调用;

实例变量必须通过类的实例调用(静态变量也可以通过类的实例调用)

7.操作对象个数不同:

静态变量的值在整个程序运行期间都是唯一的,共享的

实例变量的值是每个实例对象独有的,互不影响

8.生命周期不同:

静态变量的生命周期与相同;

实例变量的生命周期与实例对象相同