美丽乡村建设网站模板,提供网站建设收益分录,wordpress app制作教程,拼多多网站开发都知道this是一个指代作用吧#xff0c;但指代的是什么#xff1f;一般网上搜索的this 都说是“当前对象”#xff0c;但这样说和没说区别一个样#xff0c;什么是“当前对象”都说不清楚。但其实#xff0c;this指代得分下面4种情况来说。有的是场景展示的(如一、三)但指代的是什么一般网上搜索的this 都说是“当前对象”但这样说和没说区别一个样什么是“当前对象”都说不清楚。但其实this指代得分下面4种情况来说。有的是场景展示的(如一、三)另外两个是偏应用的(如二、四)。一般记住这4种情况即可。但如果再总结其实也就分成两种情况一和二是一种很常见一般具备点Java基础就不难理解三和四是一种就是文章开头说的指代“当前对象”的介绍说明是本编博客介绍的重点一、构造函数中用于区别同名的类的名字class Person{private String name ;private int age ;public Person(String name,int age){this.name name ; // 为类中的name属性赋值this.age age ;// 为类中的age属性赋值}public String getInfo(){ //return 姓名 name 年龄 age ;}};public class ThisDemo02{public static void main(String args[]){Person per1 new Person(张三,33) ;System.out.println(per1.getInfo()) ;}};这种就是常见的this指代Person类中的成员变量name或age而不是构造函数中的形参name或age,这个在eclipse里编写的时候也会有颜色区分很好理解this指代的是哪个。上面运行结果是 姓名张三年龄33如果不加this,运行结果是 姓名null,年龄0二、构造方法的相互调用用的 (偏应用)package methoud;class Person{ // 定义Person类private String name ; // 姓名private int age ; // 年龄public Person(){ // 无参构造System.out.println(新对象实例化) ;}public Person(String name){this() ;// 调用本类中的无参构造方法this.name name ;}public Person(String name,int age){ // 通过构造方法赋值this(name) ;// 调用有一个参数的构造方法this.age age ;// 为类中的age属性赋值}public String getInfo(){ // 取得信息的方法return 姓名 name 年龄 age ;}};public class ThisDemo06{public static void main(String args[]){Person per1 new Person(张三,33) ; // 调用构造实例化对象System.out.println(per1.getInfo()) ; // 取得信息}};运行结果新对象实例化姓名张三年龄33这个和构造方法重载差不多根据参数个数就能看出this方法指代的是哪一个构造函数了。注意点在使用this关键字调用其他关键字的时候有以下限制1)this()调用其他构造方法的语句只能放在构造方法(在其他普通方法里是不行的)的首行2)在使用this调用其他构造方法的时候至少有一个构造方法是不用this调用的。(必须要有结尾不能无限期的调用下去循环递归调用)错误示范package methoud;class Person{private String name ;private int age ;public Person(){System.out.println(新对象实例化) ;}public Person(String name){this.name name ;this() ;// 调用this()方法只能放在构造方法首行}public Person(String name,int age){this(name) ;// 调用有一个参数的构造方法this.age age ;}public String getInfo(){this() ;// 其他普通方法不能调用this()方法return 姓名 name 年龄 age ;}};public class ThisDemo04{public static void main(String args[]){Person per1 new Person(张三,33) ;System.out.println(per1.getInfo()) ;}};三、当前对象也就是谁在调用这个方法this就代表谁下面的例子就能很好地帮助理解class Person{public String getInfo(){System.out.println(Person类 -- this) ; // 直接打印thisreturn null ; // 为了保证语法正确返回null}};public class ThisDemo06{public static void main(String args[]){Person per1 new Person() ;Person per2 new Person() ;System.out.println(MAIN方法 -- per1) ;per1.getInfo() ; // per1在调用这个方法this指代的就是per1System.out.println(MAIN方法 -- per2) ;per2.getInfo() ; // per2在调用这个方法this指代的就是per2}};运行结果四、用于对象之间的比较用的(偏应用)class Person{ // 定义Person类private String name ; // 姓名private int age ; // 年龄public Person(String name,int age){this.setName(name) ;this.setAge(age) ;}public boolean compare(Person per){// 调用此方法时里面存在两个对象当前对象、传入的对象Person p1 this ; // 当前的对象就表示per1。下面per1调用了compare方法那么this指代的就是per1Person p2 per ; // 传递进来的对象就表示per2if(p1p2){return true ;}else{return false;}}public void setName(String name){this.name name ;}public void setAge(int age){this.age age ;}public String getName(){return this.name ;}public int getAge(){return this.age ;}};public class ThisDemo08{public static void main(String args[]){Person per1 new Person(张三,30) ;Person per2 new Person(张三,30) ;if(per1.compare(per2)){System.out.println(两个对象完全相等就是同一个对象) ;}else{System.out.println(两个对象不相等) ;}}};运行结果两个对象不相等