Java字符串的十大問題,你遇到過幾個?
Java字符串的十大問題,你遇到過幾個?
以下是有關(guān)Java字符串的十大常見問題。
1.如何比較字符串?使用"=="還是使用equals()?
簡而言之,"=="測試引用是否相等,而equals()測試值是否相等。除非要檢查兩個字符串是否是同一對象,否則應(yīng)始終使用equals()。
2.為什么對于安全敏感信息,char[]優(yōu)于String?
字符串是不可變的,這意味著一旦創(chuàng)建它們,它們將保持不變,直到啟動垃圾收集器。使用數(shù)組,您可以顯式更改其元素。這樣,安全敏感信息(例如密碼)將不會出現(xiàn)在系統(tǒng)中的任何位置。
3.我們可以在switch語句中使用字符串嗎?
是,對于版本7。從JDK 7開始,我們可以使用字符串作為切換條件。在版本6之前,我們不能使用字符串作為切換條件。
//?java?7?only!
switch?(str.toLowerCase())?{
??????case?"a":
???????????value?=?1;
???????????break;
??????case?"b":
???????????value?=?2;
???????????break;
}
4.如何將字符串轉(zhuǎn)換為int?
int?n?=?Integer.parseInt("10");
簡單,但是經(jīng)常使用,有時被忽略。
5.如何用空格字符分割字符串?
String[]?strArray?=?aString.split("\\s+");
6.什么是substring()方法真正起作用?
在JDK 6中,substring()方法為chars數(shù)組提供了一個窗口,該chars數(shù)組表示現(xiàn)有的String,但不創(chuàng)建新的。要創(chuàng)建由新的char數(shù)組表示的新字符串,您可以添加一個空字符串,如下所示:
str.substring(m,?n)?+?""
這將創(chuàng)建一個代表新字符串的新char數(shù)組。上面的方法有時可以使您的代碼更快,因為垃圾收集器可以收集未使用的大字符串并僅保留子字符串。
在Oracle JDK 7中,substring()創(chuàng)建一個新的char數(shù)組,而不使用現(xiàn)有的char數(shù)組。
7. String vs StringBuilder vs StringBuffer
String vs StringBuilder: StringBuilder是可變的,這意味著您可以在創(chuàng)建后對其進行修改。StringBuilder與StringBuffer: StringBuffer是同步的,這意味著它是線程安全的,但比StringBuilder慢。
8.如何重復(fù)一個字符串?
在Java中,我們可以使用Apache Commons Lang包中StringUtils.repeat()方法。
String?str?=?"abcd";
String?repeated?=?StringUtils.repeat(str,3);
//abcdabcdabcd
9.如何將字符串轉(zhuǎn)換為日期?
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.如何計算字符串中字符出現(xiàn)的次數(shù)?
使用來自Apache Commons lang的StringUtils。
int?n?=?StringUtils.countMatches("11112222",?"1");
System.out.println(n);
