this的内存原理
1、this的作用:
区分局部变量和成员变量
eg:
public class Student{
private int age;
public void method(){
int age = 10;
System.out.println(age);//10
System.out.println(this.age);//0使用this.可以直接使用成员变量的age
}
}
2、this的本质:
代表所在方法调用者的地址值
3、区分的原理:
代表所在方法调用者的地址值:
此时main方法里面的调用者是s,s记录的地址值是001;this的本质是方法调用者的地址值,所以this指向的地址值是001。
this的内存原理:
解析:
等号的右边name出发了就近原则,表示setName里面形参string name里面的参数,而形参里面接收的是s1.setname里面的竹小玲,所以等号右边就是竹小玲,等号左边用this调用的name是s1指向的地址值001。该句话意思就是把竹小玲赋值给等号左边001里面的name。此时方法执行完毕,进行出栈
成员变量和局部变量的区别
1、成员变量:
类中mian方法外的变量(没有上下规定,在代码中为了方便阅读,把成员变量放在最上面)
2、局部变量:
main方法里面的变量
3、成员变量和局部变量的区别:
(1)类中位置不同:
成员变量:类中,方法外
局部变量:类中,方法里面
(2)初始化值不同:
成员变量:有默认初始化值(一般是null和0)
局部变量:使用之前需要完成赋值
(3)内存位置不同:
成员变量:存储在堆内存对象里面
局部变量:存储在栈内存方法里面
(4)生命周期不同:
成员变量:随着对象的创建而存在,随着对象的消失而消失
局部变量:随着方法的调用而存在,随着方法的运行结束而消失
(5)作用域:
成员变量:整个类中有效
局部变量:仅在当前方法中有效