【Java编程基础】Java中this关键字的使用

1.第一种用法:通过this关键字去访问类的成员变量

2.第二种用法:通过this关键字调用成员方法

3.第三种用法:在其中一个构造方法中,使用this()的形式来调用其他的构造方法。

4.第四种用法:比较两个对象是否相等。

简单示例:

package cn.york.thisTest;

public class Person {
     //属性
     private String name;
     private int age;
     private String sex;
    
     //方法
     public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
    }
    public String getSex() {
        return sex;
    }
    public void setSex(String sex) {
        this.sex = sex;
    }
    //构造方法,初始化类的对象
    public Person()
    {
        //this(name, age, sex);//注意事项3:同一个类的两个构造方法不能互相调用
        System.out.println("我是无参构造方法!");
    }
    public Person(String name,int age,String sex)
    {
        //3.在其中一个构造方法中,使用this()的形式来调用其他的构造方法。
        this();
        //1.通过this关键字去访问类的成员变量
        this.name=name;
        this.age=age;
        this.sex = sex;
        //this(); //注意事项2:使用this()调用构造方法,必须放在该构造方法的第一行,而且只能调用一次。
        System.out.println("我是有参构造方法!");
    }
        
    public void Speak()
    {
        //this();//注意事项1:this()方式只能在构造方法中使用,不能在其他成员变量中去使用。
        //2.通过this关键字调用成员方法
        System.out.println("我的名字叫"+this.getName());
    }
    
    public void printInfo()
    {
        //4.表示当前正在调用该方法的对象
        System.out.println("Person类--》"+this);
    }
    
     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&&p1.sex.equals(p2.sex)){
           return true ; // 两个对象相等
          }else{
           return false ; // 两个对象不相等
          }
         }
    
    
    public static void main(String arg[])
    {
        Person p1= new Person();
        Person p2 = new Person("YorkShare",35,"男");
        Person p3 = new Person("YorkShare",35,"男");
        //调用成员方法
        p2.Speak();
        //打印对象的信息
        p1.printInfo();
        p2.printInfo();
        //比较两个对象
        if(p2.compare(p3))
        {
            System.out.println("两个对象相等!") ;
        }
        else {
            System.out.println("两个对象不相等!") ;
        }
    }  
}

运行结果:

 

注意:

(1)this()方式只能在构造方法中使用,不能在其他成员方法中去使用。

(2)使用this()调用构造方法,必须放在该构造方法的第一行,而且只能调用一次。

(3)同一个类的两个构造方法不能互相调用。

 

参考文章:

https://www.jb51.net/article/121103.htm

https://www.cnblogs.com/attentle/p/8745404.html

posted @ 2020-11-26 15:33  YorkShare  阅读(212)  评论(0编辑  收藏  举报