Java常用API(一)Object
Object是所有類的頂級父類 ---- 也是java中唯一沒有父類的類
所有的類都是Object的子類 ,所以所有的對象都能用Object接住 , ?所有的對象都可以使用Object中的方法 。?
常用方法摘要:
1. clone()?克隆并產生一個新的對象,新對象的地址與原對象地址不同,但屬性值 相同。克隆時需要強制類型轉換 , 并拋出 CloneNotSupperException異常 。?
一個類要想被克隆則必須實現Cloneable這個接口,這個接口中沒有任何的屬性和方法,只是用類標識這個類產生的對象可以被克隆。
2. getClass()? 獲取當前對象的實際類型 , 而不是聲明類型 。?
3. equals(Object 0) ? ? 判斷兩個對象是否一樣 ? ? ***面試要求手寫***
原生的equals方法與 == 作用相同,判斷的是 對應的直接值(基本數據類型 -- 值 ,引用數據類型 --- 地址)
在開發中一般重寫后用于判斷對象中存儲的值是否相同
@Overridepublic boolean equals(Object obj) {if (this == obj)return true;if (obj == null)return false;if (getClass() != obj.getClass())return false;Team other = (Team) obj;if (i != other.i)return false;if (str == null) {if (other.str != null)return false;} else if (!str.equals(other.str))return false;return true;}
4. ?fanilize()?--- 通知垃圾回收器回首對象,但是垃圾回收器不一定執行。即使gc開始回收 ?, 也只回收當前對象 。 System.gc()通知回收所有垃圾對象 。?
?System.gc() --- 底層就是fanilize,作用相同
5. ?hashCode() 根據散列算法計算出一個值 獲取對象的哈希碼(int類型),計算完成之后會產生一個32為的二進制數字 , 但是打印時會轉換為十進制顯示。2的32次 --43億多個值 ?, 所以一般在同一時期不會產生相同的哈希碼 ,相對而言(與程序算法 , 程序運行時環境有關 )哈希碼是唯一的 。如果對象還一直不被釋放 , 則哈希碼不變 。 ?如果兩個對象eruals為true , 則兩個對象哈希碼一定相同 。 ?但 哈希碼相同的兩個對象 , ?不一定相同 ?。
本地方法 native修飾 底層用C語言實現
重寫hashCode方法的時候,當equals值為true時,哈希嗎必須一致。反過來不成立6. toString() ?當打印一個對象的時候,默認是調用這個對象的toString方法。**重點**
6.??toString() : 用于打印對象 。 當直接打印對象的時候, 實際上已經調用了這個對象的toString()方法 。 Object中的toString()方法打印的是對象的地址 getclass()+"@"+o.toHashString(o.hashCode())//將哈希 嗎轉換為16進制。
總結
以上是生活随笔為你收集整理的Java常用API(一)Object的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Java面向对象(七)包、内部类、垃圾回
- 下一篇: Java常用API(二)String