首先我们了解一下堆内存和栈内存的区别
堆内存
new建立的实例都存放在堆内存中
1:每一个new出来的都有地址值
本身是一个十进制、显示的时候是一个16进制的值。
2:每一个实例中的内容都有默认值。
整数:0 浮点型:0.0 字符型:‘u\0000’ 布尔型:false
3:会在不确定的时间内被垃圾回收器回收
栈内存
局部变量和成员变量的区别
1:定义在方法中或者方法声明上的形式参数都叫做局部变量。
2:当数据使用完毕(或者超出作用域)它就自动从内存中消失
1、定义的位置区别成员变量:在类中,方法外
局部变量:方法中,或者方法的形式参数
2、初始化的区别
成员变量 :有默认初始化值
局部变量: 没有默认初始化值,想先定义,赋值才能使用。
3、存储位置区别
成员变量:堆内存,随着对象的存在而存在,随着对象的消失消失
局部变量:栈内存,随着方法的存在(调用完毕)而存在(消失)
变量使用过程中遵循就近原则
局部变量 成员变量 (在去父类)
如果直接想越过局部变量用this关键字
|
|