大战熟女丰满人妻av-荡女精品导航-岛国aaaa级午夜福利片-岛国av动作片在线观看-岛国av无码免费无禁网站-岛国大片激情做爰视频

專注Java教育14年 全國咨詢/投訴熱線:400-8080-105
動力節點LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁 學習攻略 Java學習 常見的Java面試基礎知識總結

常見的Java面試基礎知識總結

更新時間:2020-08-04 16:14:23 來源:動力節點 瀏覽2335次

1. Java中的原始數據類型都有哪些,它們的大小及對應的封裝類是什么?

(1)boolean

boolean數據類型非true即false。這個數據類型表示1 bit的信息,但是它的大小并沒有精確定義。

《Java虛擬機規范》中如是說:“雖然定義了boolean這種數據類型,但是只對它提供了非常有限的支持。在Java虛擬機中沒有任何供boolean值專用的字節碼指令,Java語言表達式所操作的boolean值,在編譯之后都使用Java虛擬機中的int數據類型來代替,而boolean數組將會被編碼成Java虛擬機的byte數組,每個元素boolean元素占8位”。這樣我們可以得出boolean類型單獨使用是4個字節,在數組中又是1個字節。那虛擬機為什么要用int來代替boolean呢?為什么不用byte或short,這樣不是更節省內存空間嗎?實際上,使用int的原因是,對于當下32位的CPU來說,一次進行32位的數據交換更加高效。

綜上,我們可以知道:官方文檔對boolean類型沒有給出精確的定義,《Java虛擬機規范》給出了“單獨時使用4個字節,boolean數組時1個字節”的定義,具體還要看虛擬機實現是否按照規范來,所以1個字節、4個字節都是有可能的。這其實是一種時空權衡。

boolean類型的封裝類是Boolean。

(2)byte——1 byte——Byte

(3)short——2 bytes——Short

(4)int——4 bytes——Integer

(5)long——8 bytes——Long

(6)float——4 bytes——Float

(7)double——8 bytes——Double

(8)char——2 bytes——Character

2. 談一談”==“與”equals()"的區別。

《Think in Java》中說:“關系操作符生成的是一個boolean結果,它們計算的是操作數的值之間的關系”。

"=="判斷的是兩個對象的內存地址是否一樣,適用于原始數據類型和枚舉類型(它們的變量存儲的是值本身,而引用類型變量存儲的是引用);equals是Object類的方法,Object對它的實現是比較內存地址,我們可以重寫這個方法來自定義“相等”這個概念。比如類庫中的String、Date等類就對這個方法進行了重寫。

綜上,對于枚舉類型和原始數據類型的相等性比較,應該使用"==";對于引用類型的相等性比較,應該使用equals方法。

3. Java中的四種引用及其應用場景是什么?

強引用: 通常我們使用new操作符創建一個對象時所返回的引用即為強引用

軟引用: 若一個對象只能通過軟引用到達,那么這個對象在內存不足時會被回收,可用于圖片緩存中,內存不足時系統會自動回收不再使用的Bitmap

弱引用: 若一個對象只能通過弱引用到達,那么它就會被回收(即使內存充足),同樣可用于圖片緩存中,這時候只要Bitmap不再使用就會被回收

虛引用: 虛引用是Java中最“弱”的引用,通過它甚至無法獲取被引用的對象,它存在的唯一作用就是當它指向的對象回收時,它本身會被加入到引用隊列中,這樣我們可以知道它指向的對象何時被銷毀。

4. object中定義了哪些方法?

clone(), equals(), hashCode(), toString(), notify(), notifyAll(), wait(), finalize(), getClass()

5. hashCode的作用是什么?

請參見散列表的基本原理與實現

6. ArrayList, LinkedList, Vector的區別是什么?

ArrayList: 內部采用數組存儲元素,支持高效隨機訪問,支持動態調整大小

LinkedList: 內部采用鏈表來存儲元素,支持快速插入/刪除元素,但不支持高效地隨機訪問

Vector: 可以看作線程安全版的ArrayList

7. String, StringBuilder, StringBuffer的區別是什么?

String: 不可變的字符序列,若要向其中添加新字符需要創建一個新的String對象

StringBuilder: 可變字符序列,支持向其中添加新字符(無需創建新對象)

StringBuffer: 可以看作線程安全版的StringBuilder

8. Map, Set, List, Queue、Stack的特點及用法。

Map: Java中存儲鍵值對的數據類型都實現了這個接口,表示“映射表”。支持的兩個核心操作是get(Object key)以及put(K key, V value),分別用來獲取鍵對應的值以及向映射表中插入鍵值對。

Set: 實現了這個接口的集合類型中不允許存在重復的元素,代表數學意義上的“集合”。它所支持的核心操作有add(E e),remove(Object o),contains(Object o),分別用于添加元素,刪除元素以及判斷給定元素是否存在于集中。

List: Java中集合框架中的列表類型都實現了這個接口,表示一種有序序列。支持get(int index), add(E e)等操作。

Queue: Java集合框架中的隊列接口,代表了“先進先出”隊列。支持add(E element), remove()等操作。

Stack: Java集合框架中表示堆棧的數據類型,堆棧是一種“后進先出”的數據結構。支持push(E item), pop()等操作。

更詳細的說明請參考官方文檔,對相關數據結構不太熟悉的同學可以參考《算法導論》或其他相關書籍。

9. HashMap和HashTable的區別

HashTable是線程安全的,而HashMap不是

HashMap中允許存在null鍵和null值,而HashTable中不允許

更加詳細的分析請參考深入解析HashMap、HashTable

10. HashMap的實現原理

簡單的說,HashMap的底層實現是“基于拉鏈法的散列表”。詳細分析請參考深入解析HashMap、HashTable

常見的Java面試基礎知識總結

以上就是動力節點java培訓機構的小編針對“常見的Java面試基礎知識總結”的內容進行的回答,希望對大家有所幫助,如有疑問,請在線咨詢,有專業老師隨時為你服務。

提交申請后,顧問老師會電話與您溝通安排學習

免費課程推薦 >>
技術文檔推薦 >>
主站蜘蛛池模板: 欧美色欧美亚洲高清在线观看 | 天天综合天天看夜夜添狠狠玩 | 精品久久久久久国产 | 奇米777视频二区中文字幕 | 久久99国产精品 | 亚洲精品国产福利片 | 99re热线精品视频 | 亚洲69av| 狠狠干欧美 | 午夜宅男免费完整在线观看 | 精品国产一区二区麻豆 | 色网站在线观看 | 日本一级大黄毛片免费基地 | 波多野结衣绝顶大高潮 | 性xxx69xxx视频在线观看 | 国产草| 日韩国产成人精品视频人 | 久久久久久亚洲精品影院 | 青青草国产三级精品三级 | 91精品国产乱码久久久久久 | 久久精品视频大全 | 国产精品视频第一页 | 亚洲国产一区二区a毛片 | 亚洲精品一区二区三区网址 | 精品久久成人 | 四虎影视永久地址www成人 | 欧美大片国产在线永久播放 | 亚洲综合站 | 开心久久婷婷综合中文字幕 | 91福利刘玥国产在线观看 | 99在线视频免费观看 | 国产精品伦理久久久久久 | 久久国产免费福利永久 | 免费黄色小视频在线观看 | 欧美成人特黄级毛片 | 欧美成人小视频 | 99爱在线精品视频网站 | 国产成人精品日本亚洲专一区 | 亚洲一区二区三区在线免费观看 | 日本h片a毛片在线播放 | 国产精品久久久久久搜索 |