Java語言中,String一直很基礎,但很多人都很多概念還是很模糊。這裏我們選取了網絡上最常見的10個問題,希望通過
1. 如何對字符串進行比較?用“==” 還是equals()
?
簡單來說,如果引用是否相同那麼使用==
, 判斷值是否相等則用equals()
。除非你想判斷2個字符串是否是同一對象,否則你都應該使用equals()
。
2. 爲什麼在安全敏感信息場合應該用char[]而不是string?
String具有不可變的特性,當字符串一旦被創建,那麼知道垃圾收集器處理之前他們都是不可變的。如果使用數組,那麼你可以明確地改變其內部單元數據。因此,安全敏感的信息例如密碼不應該在系統中任何時候都存在。
3. 我們可以在switch語句中使用string嗎?
是的,在Java 7中可以!JDK7中,我們可以在switch
中使用string。但是之前的Java版本是不可以的。
// java 7 only!
switch(str.toLowerCase()){
case "a":
value = 1;
break;
case "b":
value = 2 ;
break;
}
4. 如何將字符轉成Int類型?
int n = Integer.parseInt("10");
就是這樣簡單!
5. 如何用白色空格字符分離一個字符串?
可以使用正則表達式分離字符串。”“表示白色空格字符比如” “, “”。
String [] strArray = aString.split("\\s+");
6. substring()
這個方法起什麼作用?
在JDK6中,substring()
方法並不會創建一個新的字符數組,而是給現存的字符串一個窗口用於表示當前字符串。如果想用一個新的字符數組來表示新的字符串,你可以加一個空支付串來實現,如下所示:
str.substring(m, n) + ""
使用上述方法,會創建一個新的字符數組來表示新的字符串。有時候可以讓你的代碼更快,因爲垃圾收集器會收集一些沒有使用的大字符串但子字符串確實保留的。
JDK7中,substring()
會創建一個新的字符數組,而不是使用現在的這個。
7. String vs StringBuilder vs StringBuffer
String vs StringBuilder: StringBuilder是可變的,你可以在創建之後繼續修改它。
StringBuilder vs StringBuffer: StringBuffer是同步的,線程安全但是也因爲如此,它比StringBuilder要慢。
8. 如何重複一個字符串?
Python語言,要重複一個字符串只需要乘以一個數字即可。Java語言中,我們可以使用StringUtils中的repeat()
方法。
String str = "abcd";
String repeated = StringUtils.repeat(str,3);
//abcdabcdabcd
9. 如何將字符串轉換成日期?
String str = "Sep 17, 2013";
Date date = new SimpleDateFormat("MMMM d, yy", Locale.ENGLISH).parse(str);
System.out.println(date);
//Tue Sep 17 00:00:00 EDT 2013
10. 如何計算一個字符串中某個字符的出現次數?
使用StringUtils中方法:
int n = StringUtils.countMatches("11112222", "1");
System.out.println(n);
以上!