1. 程式人生 > >Java中常用的API

Java中常用的API

API:應用程式程式設計介面,Java中的API就是將程式碼封裝起來的類。
Object類:所有類都繼承了此類,所有類的根類。
構造方法: public Object()。所有類的構造方法都會訪問此類的無參構造。
Object--------hashCode()方法。
功能:返回該物件的雜湊碼值,預設情況下,該方法根據物件的地址值來計算。
特點:不同物件的hash值是不同的,同一個物件的hash值一定相同。
不是物件的實際地址值,可以理解為邏輯地址值。

   Object a = new Object();
       System.out.println(a.hashCode());
       //結果:356573597

Object--------getClass()方法。
功能:返回此 Object 的執行時類。
特點: 可以通過Class類的一個方法,獲取物件的真實類的全名稱

Object obj = new Object();
        Class aClass = obj.getClass();//  Object.class----->位元組碼檔案物件獲取出來
        Object obj2 = new Object();
        Class bClass1 = obj2.getClass();
        System.out.println(obj == obj2);
        System.out.println(aClass == bClass1);//true

Object--------toString()方法。
功能:返回該物件的字串表示。
特點:其值是 getClass().getName() + ‘@’ + Integer.toHexString(hashCode())
由於這些資料對我們沒有意義,因此重寫此方法。

 Object obj = new Object();
       System.out.println(obj);
       System.out.println(obj.toString());
       String a =obj.toString();
       System.out.println(a);

Object-----equals()方法。
功能: 檢測兩個物件是否相等。
特點:預設情況比較的是物件的引用是否相同。比較引用是否相同沒有意義,因此重寫此方法比較成員變數的值是否相等。
優點:提高效率和健壯性。
提問:==和equals的區別。
參考部落格

https://blog.csdn.net/qq_33290787/article/details/51810529

簡而言之就是資料儲存區域不同,==判斷的是是基本資料型別的值,equals處理引用型別變數。

Object-----clone()方法。
clone()的許可權修飾符是受保護的,在用的時候,讓該類重寫該方法,並把該方法的許可權修飾符改為public
克隆分為淺克隆和深克隆
使用clone()方法採用的是淺克隆的方式 。
淺克隆的使用:
*如果物件呼叫clone方法,該物件所屬的類必須實現Cloneable介面。
*Cloneable介面只是一個標識介面,沒有任何方法。
*淺克隆是一個物件的時候,如果被克隆的物件中存在另一個類的物件,則克隆另一個物件的地址不克隆另一個物件。
*物件的淺克隆不會呼叫到構造方法。

public class Text {
    public static void main(String[] args) throws CloneNotSupportedException{
        Person s1 = new Person("張惠妹", 40);
        Person s2 = (Person)s1.clone();
        s2.name="張三";
        s2.age=50;
        System.out.println(s1+""+s2);
    }
}public class Person implements Cloneable{
    public String name;
    public int age;

    @Override
    protected Object clone() throws CloneNotSupportedException {
        return super.clone();
    }

    @Override
    public String toString() {
        return "Person{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }

    public Person(String name, int age) {
        this.name = name;
        this.age = age;

    }

    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;
    }
}