Java局部变量和成员变量(面试常考)
**
局部变量和成员变量的区别:
**
1.声明的位置:
局部变量:方法体{ }中,形参,代码块{ }中
成员变量:类中方法外面,又可以细分为两种
- 类变量:有static修饰
- 实例变量:没有static修饰
2.修饰符
局部变量:final
成员变量:public、protected、private、final、static、volatile、transient
3.值存储的位置
局部变量:栈(虚拟机栈)
成员变量:
- 实例变量:堆
- 类变量:方法区
4.作用域
- 局部变量:从声明处开始,到所属的 } 结束
- 实例变量:在当前类中” this. “(this.可以省略),在其他类中” 对象名. “访问
- 类变量:在当前类中“ 类名. ”(类名.可以省略),在其他类中“ 类名. ”或者" 对象名. "访问都可以
5.生命周期
- 局部变量:每一个线程,每一次调用执行都是新的生命周期
- 实例变量:随着对象的创建而初始化,随着对象被回收而消亡,每一个对象的实例变量都是独立的
- 类变量:随着类的创建而初始化,随着类被卸载而消亡,该类的所有对象的类变量是共享的