public class this关键字 {
public static void main(String[] args) {
/*当存在同名的成员变量与局部变量时,在方法的内部访问的是局部变量
那是因为Java采取的是就近原则访问,要解决这个问题就需要使用this关键字*/
//内存
/*栈内存也叫方法栈,把它称为方法栈的原因是因为:
一个方法要运行的时候,JVM会在栈内存中开辟一片属于这个方法的空间,让这个方法在这片空间内执行
首先在这片代码中主方法会先执行,主方法一执行,JVM会在栈内存中开辟一片空间属于main方法,
在这片空间中先声明了一个变量animal,接着new一个Animal,这时候在堆内存中就创建了一个Animal对象,
这个Animal有name和color两个属性,都分配了默认的初始值,name=“猫”,color=白;
这时候假设它的内存地址是0X98,此时a这个变量就指向了0X98,也就是a指向了这个对象;
接着在main方法的这片空间执行a.eat();eat方法执行的时候,
JVM在栈内存中为这个方法开辟了一片属于eat方法的空间,在这个eat方法里首先声明了一个变量name=“老鼠”,
紧接着输出语句,因为Java采取的是就近原则来访问的,因为输出语句中的name变量在eat方法这片空间也存在,
如果存在它就只会在eat方法这片空间去找,如果这片空间没有它才会去到堆内存中去找
this关键字代表的是对象的引用,也就是this在指向一个对象,所指向的对象就是调用该函数的对象引用;
*/
//注意
/**/
Animal animal = new Animal("猫", "白");
animal.eat();
}
}
class Animal {
/**
* 成员变量
*/
String name;
String color;
public Animal(String n, String c) {
name = n;
color = c;
}
public void eat() {
/**局部变量*/
String name = "老鼠";
System.out.println(this.name + "在吃……");
}
}
this关键字
最新推荐文章于 2025-05-27 23:42:29 发布