摘要:常用方法取的對象信息類的方法返回一個字符串,該字符串由類名對象是該類的一個實例標記符和此對象哈希碼的無符號十六進制表示組成。方法返回的運行時類類型。至于同一個應用程序在不同執行期所得的調用結果,無需一致。
概念
object 類位于 java.lang 包中,是所有 Java 類的祖先,Java 中的每個類都由它擴展而來.
在定義一個類時,如果沒有明確的繼承一個父類的話,那么它繼承的就是object類。
常用方法 取的對象信息:public String toString()Object 類的 toString 方法返回一個字符串,該字符串由類名(對象是該類的一個實例)、標記符“@”和此對象哈希碼的無符號十六進制表示組成。
該方法用得比較多,一般子類都有覆蓋。
public String toString(){ return getClass().getName() + "@" + Integer.toHexString(hashCOde()); }
getClass()方法返回Object的運行時類類型。不可重寫,要調用的話,一般和getName()聯合使用,如getClass().getName();
示例
class Book{} class A{ public String toString(){ return "A類重載的toString"; } } public class testDemo { public static void main(String[] args) { Book b = new Book(); String s = "hello"; A a = new A(); System.out.println(b); System.out.println(b.toString()); System.out.println(s); System.out.println(a); } } 輸出結果: Book@15db9742 Book@15db9742 hello A類重載的toString
在進行對象輸出的時候,輸出操作會自動調用對象中的toString方法。Object類中的toString()方法為了適應所有對象的輸出,所以只輸出了對象的編碼。
對象比較: public boolean equals(Object obj)Object中的equals方法是直接判斷this和obj本身的值是否相等,即用來判斷調用equals的對象和形參obj所引用的對象是否是同一對象.
public boolean equals(Object obj){ return (this == obj) }
該方法在開發中會經常使用到,如果要進行類的相等判斷,一般要進行重寫。
示例:
class Book{ private String title; private double price; public Book(String title, double price){ this.title = title; this.price = price; } public String toString(){ return "書名:" + this.title + ",價格:" + this.price; } public boolean equals(Object obj){ if(this == obj){ return true; } if(obj == null){ return false; } if(!(obj instanceof Book)){ return false; } Book b = (Book) obj; if (this.title.equals(b.title) && this.price == b.price){ return true; }else{ return false; } } } public class testDemo { public static void main(String[] args) { Book b1 = new Book("java開發", 66.66); Book b2 = new Book("java開發", 66.66); Book b3 = new Book("java開發", 65.0); System.out.println(b1.equals(b2)); System.out.println(b1.equals(b3)); System.out.println(b1.equals("hello")); } } 輸出結果: true false false取的對象hash碼:public int hashCode()
按照一定的算法由對象得到的一個數值,散列碼沒有規律。
public native int hashCode();
hashCode() 方法主要用來在集合中實現快速查找等操作,也可以用于對象的比較。
在 Java 中,對 hashCode 的規定如下:
在同一個應用程序執行期間,對同一個對象調用 hashCode(),必須返回相同的整數結果——前提是 equals() 所比較的信息都不曾被改動過。至于同一個應用程序在不同執行期所得的調用結果,無需一致。
如果兩個對象被 equals() 方法視為相等,那么對這兩個對象調用 hashCode() 必須獲得相同的整數結果。
如果兩個對象被 equals() 方法視為不相等,那么對這兩個對象調用 hashCode() 不必產生不同的整數結果。
簡單地說:如果兩個對象相同,那么它們的 hashCode 值一定要相同;如果兩個對象的 hashCode 值相同,它們并不一定相同。在 Java 規范里面規定,一般是覆寫 equals() 方法應該連帶覆寫hashCode() 方法。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/73685.html
摘要:目錄介紹問題匯總具體問題好消息博客筆記大匯總年月到至今,包括基礎及深入知識點,技術博客,學習筆記等等,還包括平時開發中遇到的匯總,當然也在工作之余收集了大量的面試題,長期更新維護并且修正,持續完善開源的文件是格式的同時也開源了生活博客,從年 目錄介紹 00.Java問題匯總 01.具體問題 好消息 博客筆記大匯總【16年3月到至今】,包括Java基礎及深入知識點,Android技...
摘要:類似于中的事件驅動函數,當有事件發生時候,通過回調函數,通知主函數。一旦或內的某個函數觸發了某個事件,就能通過監聽接口發送給主函數,類似中的事件回調函數。父類與子類通過實現接口調用,此時即為父類本身。 http://homeway.me/ 0x01.About 查了一些國內資料,都說java中extended與implements的區別是,一個類只能有一個繼承,一個類可...
摘要:一個對象內存有多大為什么想知道這個,自以為很重要,其實。參考鏈接對象解析不得不了解的對象頭從開始在位系統上會默認開啟壓縮指針研究位引用指針壓縮技術 java 一個對象內存有多大 為什么想知道這個,自以為很重要,其實 just for fun =。= 測試相關說明 jdk: java 官網上下載的,HotSpot 虛擬機 java version 1.8.0_121 Java(TM)...
摘要:線程堆棧最擅長與分析如下類型問題系統無緣無故過高。性能瓶頸如無法充分利用等線程死鎖死循環,餓死等。由于線程數量太多導致系統失敗如無法創建線程等。注意死鎖的兩個或多個線程是不消耗的,有的人認為的使用率是線程死鎖導致的,這個說法是完全錯誤的。 不知覺間工作已有一年了,閑下來的時候總會思考下,作為一名Java程序員,不能一直停留在開發業務使用框架上面。老話說得好,機會是留給有準備的人的,因此...
閱讀 2574·2021-09-30 09:48
閱讀 2564·2019-08-30 14:10
閱讀 2708·2019-08-29 11:22
閱讀 1837·2019-08-26 13:51
閱讀 2276·2019-08-26 12:02
閱讀 2415·2019-08-23 16:06
閱讀 3548·2019-08-23 14:06
閱讀 1093·2019-08-23 13:56