this 的含义:
1. 区分成员变量和局部变量;
2. 谁调用这个 this 就指向谁;
- public class Person{
- private String name;
- private int age;
- public void setAge(int age){
- this.age=age;
- }
- public int getAge(){
- return age;
- }
- public void eat(){
- System.out.println(name+"正在吃饭, 他今年"+
- age);
- }
- public static void main(String[] args) {
- Person p=new Person();
- p.setAge(10);
- System.out.println(p.getAge);
- }
- }
this 的内存分析:
1. 说明: 普通方法和 main 要入栈内存, 堆中存放 new 的对象.
2. 说明: 首先 main 方法是程序入口, 并且它在栈内存中, 此时
Person p 就在栈中, 而 new Person() 在堆中, 且初始状态下,
堆中开辟了内存空间, 且 name=null ,age=0. 此时若这个
堆内存地址为 111, 则栈中 Person p 也有该地址值并指向堆中
对象 new Person(). 当执行到 "p.setAge(10);" 这个方法时,
this.age=age;<==>p.age=age; 并将堆中 age=0 改为 age=10;
执行到 "System.out.println(p.getAge);" 这里的时候就直接调
用了 p.age 方法, 并从堆中获取该值, eat 方法分析类似.
关键点: 1. 从 main 开始执行 2. 当前对象 p 调用 this, 则 this
就等价于 p;3. 当普通方法进入到栈中, 执行了相应的操作后,
会在栈中销毁.
来源: http://www.bubuko.com/infodetail-2869601.html