this 的详细用法,希望可以帮到你!!
//this 关键字
//作用:用于区分局部变量和成员变量
/*this 为什么可以解决这个问题?
* this 到底代表的是什么? this就代表本类中的对象,那到底代表哪一个呢?
* this 代表它所在函数所属对象的引用,简单的说,哪个对象在调用this所在的函数,this就代表哪个对象。
*
*
* */
/*this语句的另外一种用法。
* 用于构造函数之间的相互调用,但是有一个条件,必须放在构造函数的第一行 this(name);形式就像
* 上面这样,this和括号之间没有点。
* 举个例子说明。
* Person(String name){
* this.name=name;
* }
* Person(String name,int age){
* this.name=name;
* this.age=age;
* }
* 这个时候发现,两个构造函数中都有this.name=name,已经重复了,如果按照一般函数的做法就是:
* Person(String name){
* this.name=name;
* }
* Person(String name,int age){
* Person(name);//直接调用上面函数的封装体,但是构造函数不行。
* this.age=age;
* }
* 但是这样不行,应该这样做。
* * Person(String name){
* this.name=name;
* }
* Person(String name,int age){
* this(name);
* this.age=age;
* }
* */
public class Demo {
public static void main(String[] args) {
Person p1= new Person(20);
Person p2= new Person(25);
boolean b=p1.compare(p2);
System.out.println(b);
//Person p =new Person("zhangsan"); //新产生一个对象的时候,构造函数可以直接调用
//p.speak();
}
}
class Person{
private String name;
private int age;
Person(String name){
this.name=name;//用于区分局部变量和成员变量。如果这种情况就会有错:
//Person(String name){name=name//这样就没有办法区分了}
//this代表的是对象的name,也就是堆内存中的name
}
Person (int age){
this.age=age;
}
Person(String name,int age){
this.name=name;
this.age=age;
}
public boolean compare(Person p)
{
return this.age==p.age;//这是的this就相当于p1,因为主函数中p1调用了compare方法, 而这是的p就相当于
//p2,因为主函数中把p2传给了p,所有就相当于p1和p2在比较!
}
void speak(){
System.out.println("name="+name+"age="+age);
}
}
|