1. 程式人生 > >Java(object類及方法簡介)

Java(object類及方法簡介)

object 類介紹

java.lang.Object

  java.lang包在使用的時候無需顯示匯入,編譯時由編譯器自動匯入。

  Object類是類層次結構的根,Java中所有的類從根本上都繼承自這個類。

  Object類是Java中唯一沒有父類的類。

  其他所有的類,包括標準容器類,比如陣列,都繼承了Object類中的方法。

object 類中的方法

因為每一個類都直接或間接的繼承object類,所以一般要重寫object類中的方法,以實現相應的操作。接下來將用例子具體實現。

列表內容

1.String toString()

當列印引用,如呼叫System.out.println()時,會自動呼叫物件的toString()方法,打印出引用所指的物件的toString()方法的返回值,因為每個類都直接或間接地繼承自Object,因此每個類都有toString()方法

原來的方法內容

public String toString(){
    return getClass().getName() + "@" + Integer.toHexString(hashCode());
}

public String toString(){
    return  this.getName();
}

2.boolean equals(Object obj)

對於Object類的equals()方法來說,它判斷呼叫equals()方法的引用於傳進來的引用是否一致,即這兩個引用是否指向的是同一個物件。

  Object類中的equals()方法如下:
  

public boolean equals(Object obj){
    return (this == obj);
}

即Object類中的equals()方法等價於==。

  只有當繼承Object的類覆寫(override)了equals()方法之後,繼承類實現了用equals()方法比較兩個物件是否相等,才可以說equals()方法與==的不同。

  equals()方法需要具有如下特點:

  自反性(reflexive):任何非空引用x,x.equals(x)返回為true。

  對稱性(symmetric):任何非空引用x和y,x.equals(y)返回true當且僅當y.equals(x)返回true。

  傳遞性(transitive):任何非空引用x和y,如果x.equals(y)返回true,並且y.equals(z)返回true,那麼x.equals(z)返回true。

  一致性(consistent):兩個非空引用x和y,x.equals(y)的多次呼叫應該保持一致的結果,(前提條件是在多次比較之間沒有修改x和y用於比較的相關資訊)。

  約定:對於任何非空引用x,x.equals(null)應該返回為false。

  並且覆寫equals()方法時,應該同時覆寫hashCode()方法,反之亦然。
一個應用了equal和toString方法的簡單類——>

public class People {

    private String name;

//  構造方法
    public People(String name) {
        this.name = name;
    }
//  get set 方法
    public String getName() {
        return name;
    }


    public void setName(String name) {
        this.name = name;
    }   
//  重寫toString方法
    @Override
    public String toString() {
        return this.getName();
    }
//  重寫equal方法
    @Override
    public boolean equals(Object obj) {
        String name=((People)obj).getName();
        System.out.println(name);
        return this.name==name;
    }

    public static void main(String[] args) {
        People p1=new People("張三");
        People p2=new People("張三");
        People p3=new People("李四");
        System.out.println(p3);
        System.out.println("p1.equals(p2):"+p1.equals(p2));
        System.out.println("p1.equals(p3):"+p1.equals(p3));
    }
}

輸出結果:

李四
張三
p1.equals(p2):true
李四
p1.equals(p3):false