局部变量和成员变量的区别

1. 声明的位置

1.1局部变量:方法体中、形参、代码块中

1.2成员变量:类中方法外

1.2.1类变量:有static修饰

1.2.2实例变量:没有static修饰

2. 修饰符

2.1局部变量:final修饰

2.2成员变量:public、protected、private....

3. 值存储的位置

3.1局部变量:栈

3.2实例变量:堆

3.3类变量:方法区

4. 作用域

4.1局部变量:从声明处开始,到所属的}结束

4.2实例变量:在当前类中“this.”访问(有时可以省略),在其他类中“对象名.”访问

4.3类变量:在当前类中“类名.”访问(有时可以省略),在其他类中“类名.”访问

5. 生命周期

5.1局部变量:每个线程,都次调用执行都是新的生命周期

5.2实例变量:随着对象的创建而初始化,随着对象被回收而消亡,每个对象的实例变量都是独有的

5.3类变量:随着类的初始化而初始化,随着类的卸载而消亡,该类的所有对象的类变量都是共享的

局部变量与XX变量重名时,如何区分?

1. 局部变量与实例变量重名

1.1在实例变量前加this.

2. 局部变量与类变量重名

2.1在类变量前加类名.

Java虚拟机内存图

成员变量和局部变量的区别(成员变量和局部变量的区别和联系)(1)

Java虚拟机各个数据区详细说明

1. 堆:此内存区域唯一的目的是存放对象实例。

2. 栈:也叫虚拟机栈,用于存储局部变量表等。局部变量表存放了可知长度的各种基本类型、引用类型,方法执行完,自动释放

3. 方法区:用于存储被虚拟机加载的类信息、常量、静态变量,即被编译器编译过后的代码数据s