上一篇: Java面試題基礎篇01 (問題和答案)
15. 下面String的區別 重要
String str1 = “abc”; // 創建1個對象, 放入String 常量池, 一般稱爲常量對象
String str2 = new String(“abc”); // 創建 2個對象,先 new一個對象,然後判斷”abc” String常量池是否有,沒有會再創建一個
16. 下面Integer和 int的輸出和區別 重要
Integer a1 = 127, b1 = 127;
Integer a2 = 128, b2 = 128;
System.out.println(a1 == b1); // true
System.out.println(a2 == b2); // false
// 解釋:Integer類內部 通過靜態內部類提供了一個緩存池,範圍在-128~127之間,
Integer如果賦值在這個範圍之間,會直接指向內存池,如果超出會 new 新的對象。
Integer aa = new Integer(1);
Integer bb = new Integer(1);
System.out.println(aa == bb); //false
System.out.println(aa.equals(bb)); //true
// 解釋: 對象只要是new的就是新的內存地址
Integer aa = new Integer(1);
int bb = 1;
System.out.println(aa == bb); //true
System.out.println(aa.equals(bb)); //true
// 解釋:Integer 和 int 使用 == 比較時候,會被降維到int
Integer aa = new Integer(1);
Integer bb = 1;
System.out.println(aa==bb); //false
System.out.println(aa.equals(bb)); //true
// 解釋:new 的對象 和 棧內存池對象地址不一樣
17. Set集合怎麼保證數據的不重複
先判斷 hashCode,如果不同,直接插入
先判斷 hashCode,如果相同,再調用equals,如果不同,再插入
18. 將 ‘abc123’ 字符串反轉,把你能想到的方法都寫下來。重要
方法一 :StringBuffer
public static String reverse1(String str) {
return new StringBuilder(str).reverse().toString();
}
方法二: 字符串轉化爲 char[]
char[] chars = str.toCharArray()
19. throw 和 throws 的區別
throw是語句拋出一個異常。
throws是方法可能拋出異常的聲明。(用在聲明方法時,表示該方法可能要拋出異常)
實例:
public void inputStreamInit () throws FileNotFoundException { try { InputStream inputStream = new FileInputStream(new File("//")); } catch (FileNotFoundException e) { throw e; } }
20. 一個.java源文件中可以有多個類嗎?
只能有一個 public 修飾的類
其他作用域類不限制,內部類不限制,可以多類
實例一:
public class a {} class b {} class c {}
實例二:
public class A { class B { } }
21. mysql
mysql分頁limit 、
mysql 引擎InnoDB、
Sql速度慢優化,增加索引
Mysql 索引數據結構 B+樹。 優點: 單次請求涉及的磁盤IO次數少、查詢效率穩定、遍歷效率高
22. jsp 和 servlet 的區別
Jsp的本質是servet,只是更注意前端顯示。
Servlet更注重後端邏輯,似於一個Controller,用來做控制。
23. 用最有效率的方法計算2乘以8? 重要
2 << 3
24. java 中break、continue、return之間的區別
break 結束當前運行的循環
continue 結束本次循環,下一次繼續
return 結束當前運行方法
25. java中有幾種類型的io流?
字符流和字節流。
字節流繼承inputStream和OutputStream
字符流繼承自InputSteamReader和OutputStreamWriter。
26. 字節流和字符流區別
字節流是按字節讀取或寫入設備,但字符流是以字符爲單位讀取或寫入設備。
如果是二進制文件,需要用字節流讀取。
一般來說,字符流只處理文本文件。
在設備中,大多數情況是以字節形式存儲數據的,因此字符流通過需要傳入字節流當參數。
27. Java有沒有goto
goto 是Java中的保留字,在目前版本的Java中沒有使用。
28. &和&&的區別?
Java中&&和&都是表示與的邏輯運算符,都表示邏輯運輸符and,
當兩邊的表達式都爲true的時候,整個運算結果才爲true,否則爲false。
&&的短路功能,當第一個表達式的值爲false的時候,則不再計算第二個表達式;
&則兩個表達式都執行。
&可以用作位運算符,當&兩邊的表達式不是Boolean類型的時候,&表示按位操作。