天天看點

java基礎面試題day02

java基礎面試day02

    • 請你講講Java支援的資料類型有哪些?什麼是自動拆裝箱?(考點: 資料類型)
    • 你知道java8的新特性嗎,請簡單介紹一下(考點: jdk1.8)
    • 請你解釋為什麼會出現4.0-3.6=0.40000001這種現象?(計算機基礎)
    • 請你解釋為什麼重寫equals還要重寫hashcode?(java基礎)
    • 請說明Java中的方法覆寫(Overriding)和方法重載(Overloading)是什麼意思?(方法)
    • 請你講講數組(Array)和清單(ArrayList)的差別?什麼時候應該使用Array而不是ArrayList?(數組)

請你講講Java支援的資料類型有哪些?什麼是自動拆裝箱?(考點: 資料類型)

ava語言支援的8種基本資料類型是:
byte short int long float  double boolean  char

自動裝箱是Java編譯器在基本資料類型和對應的對象包裝類型之間做的一個轉化。
比如:把int轉化成Integer,double轉化成Double,等等。反之就是自動拆箱。
           

你知道java8的新特性嗎,請簡單介紹一下(考點: jdk1.8)

Lambda表達式− Lambda允許把函數作為一個方法的參數(函數作為參數傳遞進方法中。

方法引用− 方法引用提供了非常有用的文法,可以直接引用已有Java類或對象(執行個體)的方法或構造器。與lambda聯合使用,方法引用可以使語言的構造更緊湊簡潔,減少備援代碼。

預設方法− 預設方法就是一個在接口裡面有了一個實作的方法。

新工具− 新的編譯工具,如:Nashorn引擎 jjs、 類依賴分析器jdeps。

Stream API −新添加的Stream API(java.util.stream) 把真正的函數式程式設計風格引入到Java中。

Date Time API − 加強對日期與時間的處理。Optional 類 − Optional 類已經成為 Java 8 類庫的一部分,用來解決空指針異常。

Nashorn, JavaScript 引擎 − Java 8提供了一個新的Nashorn javascript引擎,它允許我們在JVM上運作特定的javascript應用。

請你解釋為什麼會出現4.0-3.6=0.40000001這種現象?(計算機基礎)

原因簡單來說是這樣:2進制的小數無法精确的表達10進制小數,計算機在計算10進制小數的過程中要先轉換為2進制進行計算,這個過程中出現了誤差

請你解釋為什麼重寫equals還要重寫hashcode?(java基礎)

HashMap中,如果要比較key是否相等,要同時使用這兩個函數!因為自定義的類的hashcode()方法繼承于Object類,其hashcode碼為預設的記憶體位址,這樣即便有相同含義的兩個對象,比較也是不相等的。HashMap中的比較key是這樣的,先求出key的hashcode(),比較其值是否相等,若相等再比較equals(),若相等則認為他們是相等的。若equals()不相等則認為他們不相等。如果隻重寫hashcode()不重寫equals()方法,當比較equals()時隻是看他們是否為同一對象(即進行記憶體位址的比較),是以必定要兩個方法一起重寫。HashMap用來判斷key是否相等的方法,其實是調用了HashSet判斷加入元素 是否相等。重載hashCode()是為了對同一個key,能得到相同的Hash Code,這樣HashMap就可以定位到我們指定的key上。重載equals()是為了向HashMap表明目前對象和key上所儲存的對象是相等的,這樣我們才真正地獲得了這個key所對應的這個鍵值對

請說明Java中的方法覆寫(Overriding)和方法重載(Overloading)是什麼意思?(方法)

Java中的方法重載發生在同一個類裡面兩個或者是多個方法的方法名相同但是參數不同的情況。與此相對,方法覆寫是說子類重新定義了父類的方法。方法覆寫必須有相同的方法名,參數清單和傳回類型。覆寫者可能不會限制它所覆寫的方法的通路。

請你講講數組(Array)和清單(ArrayList)的差別?什麼時候應該使用Array而不是ArrayList?(數組)

Array和ArrayList的不同點:

Array可以包含基本類型和對象類型,ArrayList隻能包含對象類型。

Array大小是固定的,ArrayList的大小是動态變化的。

ArrayList提供了更多的方法和特性,比如:addAll(),removeAll(),iterator()等等。

對于基本類型資料,集合使用自動裝箱來減少編碼工作量。但是,當處理固定大小的基本資料類型的時候,這種方式相對比較慢。