OK,今天通过在看老韩的视频, 了解了java中this的基本用法,以下是我想分享的一些心得:
1、初识 this
======================初识 this ==========================================
在JAVA中this 关键字有什么作用呢?先说结论:在java中哪个对象调用,this就代表哪个对象!!
什么意思呢?先举个例子:这就好比假如我是杨过, 我说我的妻子是小龙女。 这时还有一个人叫张无忌,张无忌的妻子和小龙女没有关系,张无忌说”我的妻子“,那就是他自己的妻子,和小龙女就没关系。 我说”我的妻子“ 代表小龙女, 而张无忌说”我的妻子“就是张无忌他的妻子,就不能代表小龙女了。
这里”我的“就好比java 中的this。
2、探索this
=======================探索 this ===========================================
this 在构造器中的应用
如过在构造器中不加this,即
class Person{
String name;
int age;
public Person(String name, int age){
System.out.println("this->hashCode:" + this.hashCode());
name = name;
age = age;
}
}
public class This{
public static void main(String[] args){
Person p1 = new Person("张无忌", 26);
System.out.println("name = " + p1.name + "\t" + "age = " + p1.age );
}
}
无论你姓名是什么, 年龄是什么 都只会得到下面的默认值结果,这是因为由于就近原则,此时的name = name 两个都是局部变量 即形参列表里的name 不会改变该对象的属性name
解决方法有两种:1、是形参列表和属性分别取不同的名字 如:
class Person{
String name;
int age;
public Person(String pname, int page){
System.out.println("this->hashCode:" + this.hashCode());
name = pname;
age = page;
}
}
这样会得到预期结果
2、使用this
class Person{
String name;
int age;
public Person(String name, int age){
this.name = name;
this.age = age;
}
}
也会得到预期结果。