This 关键字的三个用处

---恢复内容开始---

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可以调用其它构造方法,但是此语句必须放在构造方法的首行

---恢复内容结束---

猜你喜欢

转载自www.cnblogs.com/ivan999/p/10324823.html