1. 程式人生 > >JAVA基礎(30)---API之Object

JAVA基礎(30)---API之Object

API

Java語言中,已經提供了大量的類庫供程式開發者使用,這些類庫是Java語言提供的、已經寫好的、用來實現常見的和通用的功能的類的集合,我們稱之為“應用程式介面(API-Application Program Interface)”

這些API根據實現的功能不同,劃分為不同的集合,每個集合組成以個包,稱為類庫。

在我們下載和安裝的JDK中,已經包含了這些基礎的API類庫。在程式設計時,如果要實現一些特定的功能,最好的辦法是首先找一找JDK中有沒有提供相應的API類。如果有,首先使用類庫中的這些API類。只有JDK沒有提供我們需要的API類時,才需要我們自己來編寫類。因此,瞭解JDK所提供的API類可以幫助開發者節省大量的程式設計時間,而且能夠使編寫的程式更簡單更實用。

從某些方面來說,對JDK所提供的API瞭解的程度,決定了開發者程式設計的能力。

面向物件的和核心思想:“找合適的物件,做適合的事情”。JavaSE中已經描述了很多常用的類,可以使用這些類常見物件。這些常用的類一般位於  java.lang  包下,不需要導包。

在不同場合,這個程式設計介面的含義不同:

                                   1、java  api是指標準類庫提供的函式

                                   2、android 開發的api是指android  sdk函式庫

                                   3、網站api一般是指一個網站提供的介面,比如登陸驗證、資訊查詢、通知、支付等

                                   4、windows  api是指windows作業系統提供的api

Object類

Object類是所有類的基類(父類/超類),因此任何類的物件都可以使用Object中提供的方法。也可以根據需要重寫其中的方法。Object的構造是無參構造。

常用方法:

1、equals()方法

原型是:public boolean equals(Object obj)

這個方法用於比較兩個物件是否相等,預設相當於  “ == ” 的功能。對於值型別,比較他們的值是否相等;對於引用型別,比較他們的記憶體地址是否相等;我們也可以在自定義中重寫equals方法來比較兩個物件是否相等。

                                          public boolean equals(Object obj) {
                                                         return (this == obj);//this代表當前呼叫此方法物件
                                           }

2、hashCode()方法

方法原型:public int hashCode();

作用:返回該物件的雜湊碼值,這個預設值是由物件的記憶體地址計算出來的,每次執行程式返回結果可能不一樣。

提供此方法是為了提高雜湊表的效能,一般是重寫 equals 方法的同時重寫 hashCode方法,讓“相同”的物件返回相同的 hash 碼,讓不相同的物件儘量返回不相同的雜湊碼,這樣有利於提高雜湊表效能。

3、toString()方法

方法原型:public String toString();

作用:返回該物件的字串表示。自定義類可重寫此方法以方便利用toString()直接輸出物件的一些資訊。檢視JDK原始碼,發現toString()預設返回的是:

                                                 public String toString(){

                                                              return getClass.getName() + "@" + Interger.toHexString(hashCode());

                                                  }

就是:“類名 + @ + hashCode值的十六進位制形式”。

當用System.out.println(物件)輸出物件時,顯示的就是toString()返回的值、String類已經重寫了toString()方法,所以直接輸出看到的是字串。

4、finalize()

Java允許在類中定義一個名為finalize()的方法。它的工作原理是:一旦垃圾回收器準備好釋放物件佔用的儲存空間,將首先呼叫finalize()方法,並且在下一次垃圾回收動作發生時,才會真正回收物件佔用的記憶體。

關於垃圾回收,有三點需要記住:

  • 物件的 finalize 方法不一定會被呼叫,即使是程序退出前。
  • 發生 GC 時一個物件的記憶體是否釋放取決於是否存在該物件的引用,如果該物件包含物件成員,那物件成員也遵循本條。
  • 物件裡包含的物件成員按宣告順序進行釋放。

注意:在實際開發中,不要去重寫finalize()方法;也不要主動的去使用System.gc();

public class ObejctDemo{
		public static void  main(String[] args){
			
			Student stu1 = new Student();
			Student stu2 = new Student();
			System.out.println(stu1 == stu2);
			System.out.println(stu1.equals( stu2));
			String str1 = "abc";
			String str2 = "abc";
			System.out.println(str1 == str2);
			System.out.println(str1.equals( str2));
			System.out.println("---------------------------");
			System.out.println(str1.hashCode());
			System.out.println(str2.hashCode());
			System.out.println("---------------------------");
			Integer a = 12;//int a = 12
			Object obj = a.toString() + 1;
			System.out.println(obj);
			//stu1 = null;
			System.out.println("---------------------------");
			System.gc();//就是人為的呼叫垃圾回收器
		
		}
}
class Student{
	
	protected void finalize()  throws Throwable{
		System.out.println("被回收了....");
	
	}
}