一、目录
- this介绍
- this本质
- this细节
- this练习
二、this介绍
java虚拟机会给每个对象分配this,代表当前对象。
解决类成员函数的形参和成员变量同名的问题。
例如:
public class javathis {
public static void main(String[] args){
Cat cat1 = new Cat("mi", 2);
System.out.println(cat1.name);
System.out.println(cat1.age);
}
}
class Cat{
String name;
int age;
public Cat(String name, int age){
name = name;
age = age;
}
}
//null
//0
因为构造方法的形参与类成员变量同名,所以赋值的时候,直接将类成员变量赋值给类成员变量,所以还是初始值。
想要形参和类成员变量同名,但是又不影响赋值,就需要用到this关键字。
将上面的赋值语句改为:
public Cat(String name, int age){
this.name = name;
this.age = age;
}
//mi
//2
三、this本质
this的本质就是指向当前对象本身,this的地址和对象的地址是一样的。
用hashCode来证明一下,hashCode的值不是地址,但是在这里,可以当做地址。
由object类定义的hashCode方法会针对不同的对象返回不同的整数。(这是通过将该对象的内部地址转换成一个整数来实现的)
public class javathis