Object類提供了如下幾個(gè)常用方法:
Class<?> getClass():返回該對(duì)象的運(yùn)行時(shí)類。
boolean equals(Object obj):判斷指定對(duì)象與該對(duì)象是否相等。
int hashCode():返回該對(duì)象的hashCode值。在默認(rèn)情況下,Object類的hashCode()方法根據(jù)該對(duì)象的地址來計(jì)算。但很多類都重寫了Object類的hashCode()方法,不再根據(jù)地址來計(jì)算其hashCode()方法值。
String toString():返回該對(duì)象的字符串表示,當(dāng)程序使用System.out.println()方法輸出一個(gè)對(duì)象,或者把某個(gè)對(duì)象和字符串進(jìn)行連接運(yùn)算時(shí),系統(tǒng)會(huì)自動(dòng)調(diào)用該對(duì)象的toString()方法返回該對(duì)象的字符串表示。Object類的toString()方法返回 運(yùn)行時(shí)類名@十六進(jìn)制hashCode值 格式的字符串,但很多類都重寫了Object類的toString()方法,用于返回可以表述該對(duì)象信息的字符串。
另外,Object類還提供了wait()、notify()、notifyAll()這幾個(gè)方法,通過這幾個(gè)方法可以控制線程的暫停和運(yùn)行。Object類還提供了一個(gè)clone()方法,該方法用于幫助其他對(duì)象來實(shí)現(xiàn)“自我克隆”,所謂“自我克隆”就是得到一個(gè)當(dāng)前對(duì)象的副本,而且二者之間完全隔離。由于該方法使用了protected修飾,因此它只能被子類重寫或調(diào)用。
Object類提供的equals()方法默認(rèn)是用==來進(jìn)行比較的,也就是說只有兩個(gè)對(duì)象是同一個(gè)對(duì)象時(shí),才能返回相等的結(jié)果。而實(shí)際的業(yè)務(wù)中,我們通常的需求是,若兩個(gè)不同的對(duì)象它們的內(nèi)容是相同的,就認(rèn)為它們相等。鑒于這種情況,Object類中equals()方法的默認(rèn)實(shí)現(xiàn)是沒有實(shí)用價(jià)值的,所以通常都要重寫。
垃圾回收器回收對(duì)象前,會(huì)調(diào)用此方法,可以在此方法中做釋放資源等清理操作
這兩個(gè)方法用來提示 JVM 要進(jìn)行垃圾回收。但是,立即開始還是延遲進(jìn)行垃圾回收是取決于 JVM 的。
利用 java.text.DataFormat 的子類(如 SimpleDateFormat 類)中的 format(Date)方法可將日期格式化。
參考如下源代碼:
public class YesterdayCurrent{
public static void main(String[] args){
Calendar cal = Calendar.getInstance();
cal.add(Calendar.DATE, -1);
System.out.println(cal.getTime());
}
}
使用Math.random()可以生成0.1到1.0范圍內(nèi)的隨機(jī)數(shù)字,然后通過數(shù)學(xué)方法實(shí)現(xiàn)生成 符合要求的隨機(jī)數(shù)。
在Java中,可以將一個(gè)類的定義放在另外一個(gè)類的定義內(nèi)部,這就是 內(nèi)部類 。內(nèi)部類本身就 是類的一個(gè)屬性,與其他屬性定義方式一致。
內(nèi)部類可以分為四種: 成員內(nèi)部類、局部內(nèi)部類、匿名內(nèi)部類和靜態(tài)內(nèi)部類 。
一個(gè)內(nèi)部類對(duì)象可以訪問創(chuàng)建它的外部類對(duì)象的成員,包括私有成員。
可以繼承其他類或?qū)崿F(xiàn)其他接口,在 Swing 編程中常用此方式來實(shí)現(xiàn)事件監(jiān)聽和回調(diào)