天天看點

面試題

1.值傳遞和引用傳遞的差別

基本資料類型參數傳遞時,傳遞的是值的副本,改變值的副本,不會影響原來的變量 引用資料類型參數傳遞時,傳遞的是位址的副本,副本也是指向同一個變量,會影響原來的變量 String類型屬于特殊的引用資料類型,作為參數傳遞,原來的值不會改變

2.== 與 equals的差別

== 比較基本資料類型比較的是值,比較引用資料類型,比較的是位址 equals 隻能比較引用資料類型,比較的是位址
String類如果直接使用 = 号指派,将先從常量池中查找有沒有同内容的變量 如果有,則直接使用已存在的内容的位址 如果沒有,将此内容存在常量池中,完成指派 這樣做是為了節省記憶體空間
整形包裝類和char包裝類直接使用 = 号指派,如果數值相同 取值範圍在byte取值範圍以内,使用 == 比較結果為 true 超過byte取值範圍,使用 == 比較結果為 flase 因為JDK的開發人員為了節省記憶體空間,将byte取值範圍内的數值存放在一個緩存數組中 如果在byte取值範圍,那麼将從數組中取出對應的值 如果不在byte取值範圍内,直接new一個新的對象
String類對equals方法進行了重寫,改為比較内容,我們也可以對equals方法進行重寫,改為比較兩個對象的内容是否相同

冒泡排序

數組中,兩兩相鄰比較,遇到條件成立的就交換位置 經分析: 比較的輪數是數組長度 -1 ,外層循環控制比較的輪數 每一輪比較的次數:最多的一次是數組長度 -1 ,依次遞減,内層循環控制比較的次數 外層循環次數:N - 1 内層循環次數:N - 1 - i

4. String、StringBuffer、StringBulider三者的差別

String類是一個不可變對象 因為String類底層維護的是一個final修飾的char數組,任何對原字元串進行的增删改操作 都将産生一個新的字元串 StringBuffer和StringBuilder是可變對象 StringBuffer是線程安全的 JDK1.0 StringBuilder線程不安全 JDK1.5

5.try...catch...finally

try-catch塊中存在return語句,是否還執行finally塊?如果執行,如下代碼,說出執行順序