1. 程式人生 > >Android 技能圖譜學習路線系列-Java基礎之Object類方法

Android 技能圖譜學習路線系列-Java基礎之Object類方法

Object是所有類的父類,任何類都預設繼承Object。Object類到底實現了哪些方法?
1.getClass方法
public final native Class<?> getClass();
final方法,獲得執行時型別。

2.hashCode方法
public native int hashCode();
該方法用於雜湊查詢,重寫了equals方法一般都要重寫hashCode方法。這個方法在一些具有雜湊功能的Collection中用到,例如java.util.HashMap。

3.equals方法
public boolean equals(Object obj) {
return (this == obj);
}

該方法是非常重要的一個方法。一般equals和==是不一樣的,但是在Object中兩者是一樣的。子類一般都要重寫這個方法。
一般必須滿足obj1.equals(obj2)==true。可以推出obj1.hash-Code()==obj2.hashCode(),但是hashCode相等不一定就滿足equals。不過為了提高效率,應該儘量使上面兩個條件接近等價。

4.clone方法
protected native Object clone() throws CloneNotSupportedException;
保護方法,實現物件的淺複製,只有實現了Cloneable接口才可以呼叫該方法,否則丟擲CloneNotSupportedException異常。

5.toString方法
public String toString() {
return getClass().getName() + “@” + Integer.toHexString(hashCode());
}
該方法用得比較多,建議所有子類都覆蓋此方法。

6.notify方法
public final native void notify();
喚醒正在等待此物件的單個執行緒。如果喚醒的不是等待該物件的執行緒,則丟擲IllegalMonitorStateException異常。

7.notifyAll方法
public final native void notifyAll();
喚醒等待此物件的所有執行緒。如果喚醒的不是等待該物件的執行緒,則丟擲IllegalMonitorStateException異常。

8.wait方法
public final native void wait(long timeout) throws InterruptedException;
wait方法就是使當前執行緒等待該物件的鎖,當前執行緒必須是該物件的擁有者,也就是具有該物件的鎖。wait()方法一直等待,直到獲得鎖或者被中斷。wait(long timeout)設定一個超時間隔,如果在規定時間內沒有獲得鎖就返回。
呼叫該方法後當前執行緒進入睡眠狀態,直到以下事件發生。
(1)其他執行緒呼叫了該物件的notify方法。
(2)其他執行緒呼叫了該物件的notifyAll方法。
(3)其他執行緒呼叫了interrupt中斷該執行緒。
(4)時間間隔到了。
此時該執行緒就可以被排程了,如果是被中斷的話就丟擲一個InterruptedException異常。
public final void wait(long timeout, int nanos) throws InterruptedException {
if (timeout < 0) {
throw new IllegalArgumentException(“timeout value is negative”);
}
if (nanos < 0 || nanos > 999999) {
throw new IllegalArgumentException(
“nanosecond timeout value out of range”);
}
if (nanos > 0) {
timeout++;
}
wait(timeout);
}
nanos以納秒為單位,更精細地控制超時時間。

9.finalize方法
protected void finalize() throws Throwable { }
該方法用於釋放資源。因為無法確定該方法什麼時候被呼叫,很少使用。

相關推薦

Android 技能圖譜學習路線系列-Java基礎Object方法

Object是所有類的父類,任何類都預設繼承Object。Object類到底實現了哪些方法? 1.getClass方法 public final native Class<?> getClass(); final方法,獲得執行時型別。 2.hashC

Android 技能圖譜學習路線系列-Java基礎HashCode

轉自https://www.cnblogs.com/dolphin0520/p/3681042.html HashCode是Java Object類中的一個方法。 public native int hashCode(); 根據這個方法的宣告可知,該方法返回一

Android 技能圖譜學習路線系列-Java基礎反射機制

Java反射機制 一、什麼是反射機制   JAVA反射機制是在執行狀態中,對於任意一個類,都能夠知道這個類的所有屬性和方法;對於任意一個物件,都能夠呼叫它的任意方法和屬性;這種動態獲取資訊以及動態呼叫物件方法的功能稱為java語言的反射機制。    二、反射機

Android 技能圖譜學習路線系列-Java基礎方法鎖、物件鎖、

先了解一下Synchronized的用法。 一、Synchronized的用法 在修飾程式碼塊的時候需要一個reference物件作為鎖的物件。 在修飾方法的時候預設是當前物件作為鎖的物件。 在修飾類時候預設是當前類的Class物件作為鎖的物件。 二、三種鎖得區

Android 技能圖譜學習路線

resource 消息機制 2.0 nsa 重點 tcp http協議 軟件 靜態代碼分析工具 這裏是在網上找到的一片Android學習路線,希望記錄下來供以後學習 1Java 基礎 Java Object類方法 HashMap原理,Hash沖突,並發集合,

重磅:Android 技能圖譜學習路線

熱文導讀 | 點選標題閱讀作者:浪淘沙xud連結:https://www.jianshu.com

Java菜鳥學習總結】Java基礎知識(

個數 修飾符 trac 空間 釋放 set 大小 成員方法 的區別 目錄 【Java菜鳥學習總結】Java基礎知識(類) 1、面向對象編程 2、類 3、static關鍵字 4、final關鍵字 【Java菜鳥學習總結】Java基礎知識(類) 1、面向對象編程 1.1

Java基礎常用

per fse 出現 repl 四舍五入 stat 方式 pattern 第一次 一、String 1.多個字符組成的一串數據,它可以和字符數組進行相互轉換 2.構造方法:  public String ( ) 空構造  public String (byte[ ] by

Java基礎1----Object解析

ice testin another rsh rod character some lte illegal 1.Object簡介 眾所周知,Object類是Java所有類的萬類之源,所有Java類都是繼承之Object類,而默認就直接忽略了extends Object這段代

12. Java基礎抽象和接口

pre is-a 解決方案 自動變 有理 void 包括 重寫 跨域 接口和內部類為我們提供了一種將接口與實現分離的更加結構化的方法。 抽象類與接口是java語言中對抽象概念進行定義的兩種機制,正是由於他們的存在才賦予java強大的面向對象的能力。他們兩者之

Java基礎八種資料型別

第一類:邏輯型boolean 第二類:文字型char 第三類:整數型(byte、short、int、long) char型別佔2個位元組 short從-32768到32767 int從-2147483648,到2147483647共10位 long從-922337203

黑馬程式設計師----Java基礎集合(一)

------- <a href="http://www.itheima.com" target="blank">android培訓</a>、<a href="http://www.itheima.com" target="blank">java培訓</a&g

黑馬程式設計師----Java基礎String

------- <a href="http://www.itheima.com" target="blank">android培訓</a>、<a href="http://www.itheima.com" target="blank">java培訓</a&g

Java基礎File、IO流以及Properties

一、File基礎內容 Java中可以使用java.io.File類代表一個檔案或資料夾,支援跨平臺。 三大系統File的表示方法: (1)Windows:D:\abc\Hello.java 可用反斜槓,也可用正斜槓 (2)Linux/MacOS:/Users/someone

java基礎Date

一.獲取時間戳:                    1.  可以通過System.CurrentTimeMillis方式     2.  可以通過new Date.getTime()獲取。 二.將毫秒值轉化為日期物件:                  

Java基礎ClassLoader載入器簡介

classloader簡介 1 classloader層次結構(父子關係) Bootstrap(ClassLoader) ExtClassLoader AppClassLoader XXXClassLoader 詳見程

java 基礎 包裝

包裝類的簡單介紹: java 8種基本資料型別 對應 8中基本包裝類 除了Char 對應Character, int對應Integer之外.其他6種基本資料型別對應的都是首字母大寫 java不同版本對包裝類的加強 JDK 1.5 之前

JAVA基礎常用(System、Data、Calendar、Math)

System類: Math類 更多的Math類方法,請自行查詢API並選擇使用。 Data類: Data類獲取當前的時間值; 時間格式化類(SimpleDateFormat()) 定義: SimpleDate

Java基礎帶有抽象方法的列舉

public enum ConnectionState { //建立連線 CONNECTED { public boolean isConnected() {

Java基礎File與IO流(三)

一、記憶體流 使用記憶體流的需求:         把一個網路上的圖片儲存到陣列中,但是圖片的大小不能確定,怎樣解決? 記憶體流主要用來操作記憶體 ByteArrayInputStream和ByteArrayOutputStream         輸入和輸出可以把檔案作為