Java常用類String的面試題匯總
比較兩個字元串時使用「==」還是equals()方法?
當然是equals方法。「==」測試的是兩個對象的引用是否相同,而equals()比較的是兩個字元串的值是否相等。簡單來說,基本數據類型都可以使用==。而引用類型使用==比較不了。
如何將字元串轉化成int?
使用包裝類Integer。Integer.valueOf("2");其他基本數據類型都是類似
為什麼在Java中存儲密碼要使用char[],而不使用String。
因為String是不可變的,當String創建之後,就不會再改變了。而char[]是可變的,程序員在用完之後可以將其改變,不會留下任何原始數據。所以,在使用密碼時,一般都是會用char數組,例如JavaSwing中的JPassWordField,獲取密碼框的值就是使用char數據。而不使用String。
String可以在Switch語句中使用嗎?
JDK1.7之後確實可以了。之前不行。需要程序員對JDK升級的API有適當的了解。
如何將字元串用空白字元分割開
可以使用正則表達式來做到分割字元。「s」代表空白字元」 「, 「 」, 「
」, 「
」等等, String[] strArray = str.split("\s+");substring()方法到底做了什麼?
因為String是不可變的,所以在字元串截取時,subString做了一些工作。在JDK6時,用一個字元數組來表示現存的字元串,然後在這個字元數組中截取字元串,截取之後,並沒有創建新的字元數組。而在JDK7中,截取的新的字元串是一個新的數組,這樣效率更快一些。因為垃圾回收器會去回收不再使用的字元串。
如何將字元串轉換成時間Date?
使用SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Date date =sdf.parse("2017-12-10");
字元串對象String,StringBuilder ,StringBuffer之間的區別?
String不可變的,其餘兩個為可變的,也就是可以自由增加或者刪除字元串。
StringBuilder 和StringBuffer,前者是線程不安全的,後者是線程安全的。理論上StringBuilder 效率更高。
字元串大量拼接時,建議使用StringBuilder ,StringBuffer。
計算一個字元串某個字元的出現次數
a, 使用charAt方法截取之後,循環判斷.
b, 使用apache commons lang包中的StringUtils:
int n = StringUtils.countMatches("ababababab", "a");
System.out.println(n);
如何使一個字元串重複N次。
API提供了一個非常好的方法。String str = "ab";
String repeated = StringUtils.repeat(str,3);//輸出的結果是ababab,三次重複.
學習Java的同學注意了!!!
學習過程中遇到什麼問題或者想獲取學習資源的話,歡迎加入Java學習交流群495273252,我們一起學Java!
※Java程序員常犯的10個錯誤
※談談Java中遍歷Map的幾種方法
※其實,我只想安靜的寫寫代碼……
※Java線程池入門必備
※Java進階自測——面向對象基礎知識掌握了嗎?
TAG:Java團長 |