這裡提到了 10 個關於 Java 字串的最常見問題
-
如何比較字串?使用什麼:「
==
」或equals()
?簡而言之,「
==
」比較對字串的引用,但equals()
比較這些字串中包含的值。如果您不想檢查兩個字串是否是同一對象,那麼您應該使用equals()
.了解字串池的概念也很有好處。
-
為什麼優先使用
char[]
字串 (String
) 來保護敏感資訊?字串是不可變的。這意味著一旦創建了字串,在垃圾收集器運行之前它不會被修改。對於數組來說,很明顯我們可以更改它的元素。這樣,敏感資訊(例如密碼)將不會以明文形式儲存在程式中的任何位置。
-
使用switch 語句時可以將字串當作參數傳遞嗎?
是的,從 JDK 版本 7 開始。以前,在版本 6 中,這是不可能的。
// java 7 only! switch (str.toLowerCase()) { case "a": value = 1; break; case "b": value = 2; break; }
-
如何將字串轉換為整數值?
int n = Integer.parseInt("10");
Java 中的其他基本型別也是如此。
-
如何將字串拆分為空格分隔的行?
最簡單的方法是使用正規表示式。「
\s
」 充當空白字元的替代品,例如「\t
」、「\r
」、「\n
」。String[] strArray = aString.split("\\s+");
-
<方法實際上做了什麼
substring()
?在 JDK 6 中,該方法
substring()
顯示現有字串中的部分字符,但沒有建立該字串的單獨實例。若要建立一個表示為字元陣列的新字串,您可以新增一些空字串,例如,如下所示:str.substring(m, n) + ""
結果是一個字元數組,這是我們的新字串。這種方法有時可以減少程式碼執行時間,因為垃圾收集器可以銷毀未使用的大字串並僅儲存子字串。
在 Oracle JDK 7 中,此方法
substring()
會建立一個新的字元數組,而不使用現有的字元數組。您也可以查看代表 JDK 6 和 JDK 7 中 substring() 方法之間差異的圖表。 -
String、StringBuilder、StringBuffer
String
vsStringBuilder
:StringBuilder
可變,這意味著我們可以在物件創建後更改其內容。StringBuilder
vsStringBuffer
:StringBuffer
同步,這意味著它在同時從多個執行緒使用時可以正確運行,但比StringBuilder
. -
如何將一行重複多次?
在Python中,我們可以簡單地將一個字串乘以一個數字
n
,然後它就會重複n次。repeat()
在 Java 中,我們可以使用 Apache Commons Lang 庫類別中的方法StringUtils
。String str = "abcd"; String repeated = StringUtils.repeat(str,3); //abcdabcdabcd
-
如何將字串轉換為日期?
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
-
如何統計字串中某個字元出現的次數?
StringUtils
使用Apache Commons Lang 庫中的類別。int n = StringUtils.countMatches("11112222", "1"); System.out.println(n);
GO TO FULL VERSION