java里this关键字的作用总结

来源:互联网 发布:apache post日志 编辑:程序博客网 时间:2024/04/28 09:36

this关键字的作用:

1、表示类中的属性。

class Person{  // 定义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()) ; // 取得信息
 }
};


2、使用this调用本类的构造方法。

构造方法间可以互相调用,使用this(参数)的形式完成。

注意:在使用this关键字调用其他构造方法时,this()调用构造方法的语句只能放在构造方法的首行。

在使用this调用本类中的其他构造方法是,至少有一个构造方法是不用this调用的,以防止递归调用的情况出现。

  1. class Person{       // 定义Person类 
  2.     private String name ;       // 姓名 
  3.     private int age ;          // 年龄 
  4.     public Person(){    // 无参构造 
  5.         System.out.println("新对象实例化") ; 
  6.     } 
  7.     public Person(String name){ 
  8.         this() ;// 调用本类中的无参构造方法 
  9.         this.name = name ; 
  10.     } 
  11.     public Person(String name,int age){// 通过构造方法赋值 
  12.         this(name) ;// 调用有一个参数的构造方法 
  13.         this.age = age ;// 为类中的age属性赋值 
  14.     } 
  15.     public String getInfo(){   // 取得信息的方法 
  16.         return "姓名:" + name +",年龄:" + age ; 
  17.     } 
  18. }; 
  19. public class ThisDemo05{ 
  20.     public staticvoid main(String args[]){ 
  21.         Person per1 = new Person("张三",33) ;// 调用构造实例化对象 
  22.         System.out.println(per1.getInfo()) ;    // 取得信息 
  23.     } 
  24. }; 


3、表示当前对象。

使用this和引用传递比较两个对象是否相等。

String本身是一个类,进行相等的比较,则要判断内容,使用equals()方法来完成。

age是int类型,使用 == 即可。

地址相等,则两个对象相等。地址如果不相等,一次判断属性内容是否相等。

 
  1. class Person{       // 定义Person类 
  2.     private String name ;   // 姓名 
  3.     private int age ;      // 年龄 
  4.     public Person(String name,int age){ 
  5.         this.setName(name) ; 
  6.         this.setAge(age) ; 
  7.     } 
  8.     public boolean compare(Person per){ 
  9.         // 调用此方法时里面存在两个对象:当前对象、传入的对象 
  10.         Person p1 = this// 当前的对象,就表示per1 
  11.         Person p2 = per ;   // 传递进来的对象,就表示per2 
  12.         if(p1==p2){ // 判断是不是同一个对象,用地址比较 
  13.             return true
  14.         } 
  15.         // 之后分别判断每一个属性是否相等 
  16.         if(p1.name.equals(p2.name)&&p1.age==p2.age){ 
  17.             return true ;   // 两个对象相等 
  18.         }else
  19.             return false// 两个对象不相等 
  20.         } 
  21.     } 
  22.     public void setName(String name){  // 设置姓名 
  23.         this.name = name ; 
  24.     } 
  25.     public void setAge(int age){       // 设置年龄 
  26.         this.age = age ; 
  27.     } 
  28.     public String getName(){ 
  29.         return this.name ; 
  30.     } 
  31.     public int getAge(){ 
  32.         return this.age ; 
  33.     } 
  34. }; 
  35. public class ThisDemo08{ 
  36.     public staticvoid main(String args[]){ 
  37.         Person per1 = new Person("张三",30) ;// 声明两个对象,内容完全相等 
  38.         Person per2 = new Person("张三",30) ;// 声明两个对象,内容完全相等 
  39.         // 直接在主方法中依次取得各个属性进行比较 
  40.         if(per1.compare(per2)){ 
  41.             System.out.println("两个对象相等!") ; 
  42.         }else
  43.             System.out.println("两个对象不相等!") ; 
  44.         } 
  45.     } 
  46. }; 
原创粉丝点击