this的用法;
加this
如果是第一种,结果是My name is test !;
print方法中,参数name与成员变量重名。
不加this:
public class Person{
public String name;
Person(String n){
name = n;
}
public void print(String name){
System.out.println("My name is " + name + " !" );
}
}
加this
public class Person{
public String name;
Person(String n){
name = n;
}
public void print(String name){
System.out.println("My name is " + this.name + " !" );
}
}
//检查上述两个类的运行结果
public class PersonTest{
public static void main(String args[]){
Person person1 = new Person("Chen Jun");
person1.print("test");
}
}
如果是第一种,结果是My name is test !;
如果是第二种,结果是My name is Chen Jun! ;
这种问题比较少见。
可能比较仔细的人已经发现,构造函数里的参数n,是指name的意思,但为什么不用name来表示呢,因为成员变量与该参数重名,如果如下写代码,编译通不过。
public class Person{ public String name; Person(String name){ name = name; } }
需要用到this,this一个重要的作用也是用于解决构造函数中的参数与成员变量重名问题;public class Person{ public String name; Person(String name){ this.name = name; } }
如果学过C++,this可以理解为一个指针,这个指针指向调用这个方法的对象。