日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 >

Java面试题16 牛客 以下java程序代码,执行后的结果是()

發(fā)布時間:2023/12/10 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Java面试题16 牛客 以下java程序代码,执行后的结果是() 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

Java面試題16 牛客 以下java程序代碼,執(zhí)行后的結(jié)果是()

1

2

3

4

5

6

7

8

9

10

public class Test {

????public static void main(String[] args) {???

????????Object o = new Object() {??

?????????????public boolean equals(Object obj) {??

?????????????????return true;?

?????????}

?????};???

?????System.out.println(o.equals("Fred"));

?????}

}

?

A:Fred B:true C:編譯錯誤 D:運行時拋出異常

懵逼樹上懵逼過,懵逼樹下你和我

看到這種題,立馬有種控制不住自己的手,打開了桌面上的任意一款工具

在idea和eclipse中,選到了idea

小手一抖,代碼帶走,一跑運行,答案為B

一看解析,哦,原來是這個樣子,重寫了object的方法

1.clone方法

保護方法,實現(xiàn)對象的淺復(fù)制,只有實現(xiàn)了Cloneable接口才可以調(diào)用該方法,否則拋出CloneNotSupportedException異常。

主要是JAVA里除了8種基本類型傳參數(shù)是值傳遞,其他的類對象傳參數(shù)都是引用傳遞,我們有時候不希望在方法里講參數(shù)改變,這是就需要在類中復(fù)寫clone方法。

2.getClass方法

final方法,獲得運行時類型。

3.toString方法

該方法用得比較多,一般子類都有覆蓋。

4.finalize方法

該方法用于釋放資源。因為無法確定該方法什么時候被調(diào)用,很少使用。

5.equals方法

該方法是非常重要的一個方法。一般equals和==是不一樣的,但是在Object中兩者是一樣的。子類一般都要重寫這個方法。

6.hashCode方法

該方法用于哈希查找,可以減少在查找中使用equals的次數(shù),重寫了equals方法一般都要重寫hashCode方法。這個方法在一些具有哈希功能的Collection中用到。

一般必須滿足obj1.equals(obj2)==true。可以推出obj1.hash- Code()==obj2.hashCode(),但是hashCode相等不一定就滿足equals。不過為了提高效率,應(yīng)該盡量使上面兩個條件接近等價。

如果不重寫hashcode(),在HashSet中添加兩個equals的對象,會將兩個對象都加入進(jìn)去。

7.wait方法

wait方法就是使當(dāng)前線程等待該對象的鎖,當(dāng)前線程必須是該對象的擁有者,也就是具有該對象的鎖。wait()方法一直等待,直到獲得鎖或者被中斷。wait(long timeout)設(shè)定一個超時間隔,如果在規(guī)定時間內(nèi)沒有獲得鎖就返回。

調(diào)用該方法后當(dāng)前線程進(jìn)入睡眠狀態(tài),直到以下事件發(fā)生。

(1)其他線程調(diào)用了該對象的notify方法。

(2)其他線程調(diào)用了該對象的notifyAll方法。

(3)其他線程調(diào)用了interrupt中斷該線程。

(4)時間間隔到了。

此時該線程就可以被調(diào)度了,如果是被中斷的話就拋出一個InterruptedException異常。

8.notify方法

該方法喚醒在該對象上等待的某個線程。

9.notifyAll方法

該方法喚醒在該對象上等待的所有線程。

二、finalize()的作用

Java允許在類中定義一個名為finalize()的方法。它的工作原理是:一旦垃圾回收器準(zhǔn)備好釋放對象占用的存儲空間,將首先調(diào)用其finalize()方法。并且在下一次垃圾回收動作發(fā)生時,才會真正回收對象占用的內(nèi)存。

關(guān)于垃圾回收,有三點需要記住:

1、對象可能不被垃圾回收。只要程序沒有瀕臨存儲空間用完的那一刻,對象占用的空間就總也得不到釋放。

2、垃圾回收并不等于“析構(gòu)”。

3、垃圾回收只與內(nèi)存有關(guān)。使用垃圾回收的唯一原因是為了回收程序不再使用的內(nèi)存。
finalize()的用途:

無論對象是如何創(chuàng)建的,垃圾回收器都會負(fù)責(zé)釋放對象占據(jù)的所有內(nèi)存。這就將對finalize()的需求限制到一種特殊情況,即通過某種創(chuàng)建對象方式以外的方式為對象分配了存儲空間。不過這種情況一般發(fā)生在使用“本地方法”的情況下,本地方法是一種在Java中調(diào)用非Java代碼的方式。

為什么不能顯示直接調(diào)用finalize方法?
? 如前文所述,finalize方法在垃圾回收時一定會被執(zhí)行,而如果在此之前顯示執(zhí)行的話,也就是說finalize會被執(zhí)行兩次以上,而在第一次資源已經(jīng)被釋放,那么在第二次釋放資源時系統(tǒng)一定會報錯,因此一般finalize方法的訪問權(quán)限和父類保持一致,為protected。
答案為B

我是歌謠,有什么不合理之處歡迎指出。喜歡敲代碼,么事刷刷題。

閱讀目錄(置頂)(長期更新計算機領(lǐng)域知識)

閱讀目錄(置頂)(長期更新計算機領(lǐng)域知識)

閱讀目錄(置頂)(長期科技領(lǐng)域知識)

歌謠帶你看java面試題

總結(jié)

以上是生活随笔為你收集整理的Java面试题16 牛客 以下java程序代码,执行后的结果是()的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。