三.this的用法:
1.在构造器中调用另一个构造器
(注意:该语句要在第一条,只能在构造器中使用)
2.调用成员方法: this.方法名(参数列表)
3.不能再类外部使用
4.用于访问类的属性,是有就近原则在的
总之,this可以用来访问属性、成员方法和构造器
5.this用来区分局部变量和属性
自己演示上述用法的代码:
public class ThisDetail01 {public static void main(String[] args) {T c = new T();c.f1();}
}class T{//属性String name="xiao";int age=18;//构造器public T(){this("xx",16);System.out.println("1.调用构造器");System.out.println("T()构造器被调用");System.out.println("===============================");}public T(String name,int age){System.out.println("T(String name,int age)构造器被调用");System.out.println("name="+name+" age="+age);}//成员方法public void f1(){String name="xiaogou";int age=17;System.out.println("2.调用方法");System.out.println("方法f1()被调用");//第一种方法f2();//第二种方法:this.f2();System.out.println("===============================");System.out.println("3.调用属性");System.out.println("name="+this.name+" age="+this.age);System.out.println("name="+name+" age="+age);}public void f2(){System.out.println("方法f2()被调用");}
}
如图,若不将调用构造器的语句放在方法的第一条,就会报错
关于我上次的疑问:
进一步理解:
这个两个name 应该都是形参(局部变量)中的name,根据就近原则,和属性中的name 没有关系
一个对象,对应一个类,this在类中的操作就相当于是在给对象操作,也就是:对象是类的实例
练习:
定义Person5类,用compareTo方法比较两者name和age是否相等,用TestPerson类演示
public class TestPerson {public static void main(String[] args) {Person5 p1=new Person5("a",10);Person5 p2=new Person5("a",10);System.out.println("p1和p2比较的结果 "+p1.compareTo(p2));}
}class Person5{String name;int age;public Person5(String name, int age) {this.name = name;this.age = age;}public boolean compareTo(Person5 p){return this.name.equals(p.name)&&(this.age==p.age);}
}
public boolean compareTo(Person5 p){ return this.name.equals(p.name)&&(this.age==p.age); } }
返回值是boolean类型,可以用return来判断
this指的是p1的,p指的是p2的,调用p1对象的compareTo方法来进行比较