天天看點

Java中this關鍵字在構造方法中的使用

1. Java中this關鍵字代表對象本身。用this關鍵字可以在類的内部調用屬性和方法,這樣代碼的可讀性比較高,因為它明确的指出了這個屬性或方法的來源。

2. 同時在構造函數中也可以使用this關鍵字調用本類中的其它構造函數,但有幾點需要注意:

  • 構造函數調用其它構造函數,需要将this寫在構造函數的第一行。
  • 構造函數不可遞歸,防止死循環。

3. 一個類的構造函數分為無參和有參構造函數。通常做法是指定寫好一個包含所有字段的構造函數,然後其它構造函數可以直接調用該函數,實作代碼重用。

package org.lyk.entities;

public class Emp implements Comparable<Emp>
{
    private long empno;
    private String ename;
    private String job; 
    private float sal;
    
    
    public long getEmpno()
    {
        return empno;
    }
    public void setEmpno(long empno)
    {
        this.empno = empno;
    }
    public String getEname()
    {
        return ename;
    }
    public void setEname(String ename)
    {
        this.ename = ename;
    }
    public String getJob()
    {
        return job;
    }
    public void setJob(String job)
    {
        this.job = job;
    }
    public float getSal()
    {
        return sal;
    }
    public void setSal(float sal)
    {
        this.sal = sal;
    }
    
    
    @Override
    public String toString()
    {
        return "Emp [empno=" + empno + ", ename=" + ename + ", job=" + job + ", sal=" + sal + "]";
    }
    public Emp()
    {
        this(-1, "無名氏", "未指定", 0);
    }
    public Emp(long empno)
    {
        this(empno,"無名氏","未指定",0);
    }
    public Emp(long empno, String name)
    {
        this(empno, name, "未指定", 0);
    }
    
    public Emp(long empno, String ename, String job, float sal)
    {
        super();
        this.empno = empno;
        this.ename = ename;
        this.job = job;
        this.sal = sal;
    }
    @Override
    public int compareTo(Emp o)
    {
        if(this.sal < o.sal)
            return -1;
        else if(this.sal > o.sal)
            return 1;
        
        if(this.empno < o.empno)
            return -1;
        else if(this.empno > o.empno)
            return 1; 
        
        return 0;
    }
    
    
    
}      
package org.lyk.main;

import org.lyk.entities.Emp;

public class Main
{ 
    public static void main(String[] args)
    {
        Emp[] emp = new Emp[4];
        
        emp[0] = new Emp();
        emp[1] = new Emp(9989);
        emp[2] = new Emp(9987,"Jerry");
        emp[3] = new Emp(7786,"Larry","programer",889);
        
        
        java.util.Arrays.sort(emp);
        for(Emp item : emp)
        {
            System.out.println(item);
        }
    }
}