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.当普通方法进入到栈中,执行了相应的操作后,
会在栈中销毁。
构造器的内存分析:未完待补充