---恢复内容开始---
1、this调用本类中的属性,也就是类中的成员变量
2、this调用本类中的其他构造方法,调用时要放在构造方法的首行。
1、this调用本类中的属性,也就是类中的成员变量 1 class Person{ // 定义Person类 2 private String name ; // 姓名 3 private int age ; // 年龄 4 public Person(String name,int age){ // 通过构造方法赋值 5 this.name = name ; // 为类中的name属性赋值 6 this.age = age ;// 为类中的age属性赋值 7 } 8 public String getInfo(){ // 取得信息的方法 9 return "姓名:" + name + ",年龄:" + age ; 10 } 11 }; 12 public class ThisDemo02{ 13 public static void main(String args[]){ 14 Person per1 = new Person("张三",33) ; // 调用构造实例化对象 15 System.out.println(per1.getInfo()) ; // 取得信息 16 } 17 };
this.name this.age分别为类的属性name 和age赋值
this调用本类中的其他构造方法,调用时要放在构造方法的首行。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 ThisDemo04{ public static void main(String args[]){ Person per1 = new Person("张三",33) ; // 调用构造实例化对象 System.out.println(per1.getInfo()) ; // 取得信息 } };
首先定义无参构造函数Person 并且由 System.out.println("新对象实例化") ;输出一句语句 第二个定义了一个有参的构造函数 String name 并且由this()调用了第一个无参函数Person() 第三个定义了有两个参数的构造函数 同时 this(name)是调用了上一个构造方法Person(String name) 同时 下面的this.age位age属性赋值
执行结果如下:
this表示当前对象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 Person p2 = per ; // 传递进来的对象,就表示per2 if(p1==p2){ // 判断是不是同一个对象,用地址比较 return true ; } // 之后分别判断每一个属性是否相等 if(p1.name.equals(p2.name)&&p1.age==p2.age){ 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("两个对象不相等!") ; } } };
this表当前对象和其他对象作比较 像张三和李四作比较 由张三调用李四 然后和李四进行比较
if(per1.compare(per2)) 同时定义了构造函数compare(Person per)由张三调用compare函数 将李四调进去尽享比较。
Person p1 = this ; // 当前的对象,就表示per1 表示当前对象 Person p2 = per ; // 传递进来的对象,就表示per2
总结 This.属性 this.()方法实际上都表示了当前的对象的属姓或者当前对象调用的方法 this的核心 表示当前对象 当前正在操作本方法的对象称之为当前对象 this可以调用其它构造方法,但是此语句必须放在构造方法的首行
---恢复内容结束---
原文地址:https://www.cnblogs.com/ivan999/p/10324823.html
时间: 2024-10-28 02:05:32