溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Java有哪些基礎(chǔ)面試題

發(fā)布時(shí)間:2020-07-29 12:46:47 來(lái)源:億速云 閱讀:173 作者:Leah 欄目:編程語(yǔ)言

Java有哪些基礎(chǔ)面試題?相信很多沒(méi)有經(jīng)驗(yàn)的人對(duì)此束手無(wú)策,為此本文總結(jié)了問(wèn)題出現(xiàn)的原因和解決方法,通過(guò)這篇文章希望你能解決這個(gè)問(wèn)題。

1、Java 有哪些特點(diǎn)?

答案:并發(fā)性,你可以在其中執(zhí)行許多語(yǔ)句,而不必一次執(zhí)行它;面向?qū)ο螅陬?lèi)和面向?qū)ο蟮木幊陶Z(yǔ)言;獨(dú)立性,支持一次編寫(xiě),到處運(yùn)行的獨(dú)立編程語(yǔ)言,即編譯后的代碼可以在支持Java的所有平臺(tái)上運(yùn)行。

2、值傳遞和引用傳遞的區(qū)別是什么?

答案:值傳遞  是指在調(diào)用函數(shù)時(shí)將實(shí)際參數(shù)復(fù)制一份到函數(shù)中,這樣的話如果函數(shù)對(duì)其傳遞過(guò)來(lái)的形式參數(shù)進(jìn)行修改,將不會(huì)影響到實(shí)際參數(shù)。引用傳遞 是指在調(diào)用函數(shù)時(shí)將對(duì)象的地址直接傳遞到函數(shù)中,如果在對(duì)形式參數(shù)進(jìn)行修改,將影響到實(shí)際參數(shù)的值。

3、描述一下==equals的區(qū)別。

答案:== Java中一種操作符,它有兩種比較方式。一是對(duì)于基本數(shù)據(jù)類(lèi)型來(lái)說(shuō),==判斷的是兩邊的值是否相等。另一個(gè)是對(duì)于引用類(lèi)型來(lái)說(shuō),==判斷的是兩邊的引用是否相等,也就是判斷兩個(gè)對(duì)象是否指向了同一塊內(nèi)存區(qū)域。equalsJava中所有對(duì)象的父類(lèi),即 Object 類(lèi)定義的一個(gè)方法。它只能比較對(duì)象,它表示的是引用雙方的值是否相等。所以記住,并不是說(shuō)==比較的就是引用是否相等,equals比較的就是值,這需要區(qū)分來(lái)說(shuō)的。

4、String中的equals是如何重寫(xiě)的?

答案:String代表的是Java開(kāi)發(fā)中的字符串,String類(lèi)比較特殊,它整個(gè)類(lèi)都是被final修飾的,也就是說(shuō),String不能被任何類(lèi)繼承,任何 修改String字符串的方法都是創(chuàng)建了一個(gè)新的字符串。equals方法是Object類(lèi)定義的方法,Object是所有類(lèi)的父類(lèi),當(dāng)然也包括String,String重寫(xiě)了equals方法,下面我們來(lái)看看是怎么重寫(xiě)的:

Java有哪些基礎(chǔ)面試題

首先會(huì)判斷要比較的兩個(gè)字符串它們的引用是否相等。如果引用相等的話,直接返回 true ,不相等的話繼續(xù)下面的判斷。然后再判斷被比較的對(duì)象是否是 String 的實(shí)例,如果不是的話直接返回 false,如果是的話,再比較兩個(gè)字符串的長(zhǎng)度是否相等,如果長(zhǎng)度不想等的話也就沒(méi)有比較的必要了;長(zhǎng)度如果相同,會(huì)比較字符串中的每個(gè) 字符 是否相等,一旦有一個(gè)字符不相等,就會(huì)直接返回 false。

5、為什么重寫(xiě)equals方法必須重寫(xiě)hashcode方法?

答案:如果在 Java 運(yùn)行期間對(duì)同一個(gè)對(duì)象調(diào)用 hashCode 方法后,無(wú)論調(diào)用多少次,都應(yīng)該返回相同的 hashCode,但是在不同的 Java 程序中,執(zhí)行 hashCode 方法返回的值可能不一致。如果兩個(gè)對(duì)象的 equals 相等,那么 hashCode 必須相同。如果兩個(gè)對(duì)象 equals 不相等,那么 hashCode 也有可能相同,所以需要重寫(xiě) hashCode 方法,因?yàn)槟悴恢?span> hashCode 的底層構(gòu)造(反正我是不知道,有大牛可以傳授傳授),所以你需要重寫(xiě) hashCode 方法,來(lái)為不同的對(duì)象生成不同的 hashCode 值,這樣能夠提高不同對(duì)象的訪問(wèn)速度。hashCode 通常是將地址轉(zhuǎn)換為整數(shù)來(lái)實(shí)現(xiàn)的。

6static關(guān)鍵字有什么用?

答案:staticJava中非常重要的關(guān)鍵字,static表示的概念是靜態(tài)的,在Java中,static 主要用來(lái)修飾變量,static修飾的變量能夠直接通過(guò)類(lèi)名變量名來(lái)進(jìn)行訪問(wèn),不用通過(guò)實(shí)例化類(lèi)再進(jìn)行使用。static 可以修飾代碼塊,主要分為兩種,一種直接定義在類(lèi)中,使用 static{},這種被稱為靜態(tài)代碼塊,一種是在類(lèi)中定義靜態(tài)內(nèi)部類(lèi),使用 static class xxx 來(lái)進(jìn)行定義。

7、抽象類(lèi)和接口的不同點(diǎn)是什么?

答案:抽象級(jí)別不同:類(lèi)、抽象類(lèi)、接口其實(shí)是三種不同的抽象級(jí)別,抽象程度依次是 接口 > 抽象類(lèi) > 類(lèi)。在接口中,只允許進(jìn)行方法的定義,不允許有方法的實(shí)現(xiàn),抽象類(lèi)中可以進(jìn)行方法的定義和實(shí)現(xiàn);而類(lèi)中只允許進(jìn)行方法的實(shí)現(xiàn),我說(shuō)的方法的定義是不允許在方法后面出現(xiàn) {};使用的關(guān)鍵字不同:類(lèi)使用 class 來(lái)表示;抽象類(lèi)使用 abstract class 來(lái)表示;接口使用 interface 來(lái)表示;變量:接口中定義的變量只能是公共的靜態(tài)常量,抽象類(lèi)中的變量是普通變量。

看完上述內(nèi)容,你們掌握J(rèn)ava有哪些基礎(chǔ)面試題的方法了嗎?如果還想學(xué)到更多技能或想了解更多相關(guān)內(nèi)容,歡迎關(guān)注億速云行業(yè)資訊頻道,感謝各位的閱讀!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI