如何比較兩個字符串?用「=」仍是equalsjava
簡單來講,「==」是用來檢測倆引用是否是指向內存中的同一個對象,而equals()方法則檢測的是兩個對象的值是否相等。只要你想檢測倆字符串是否是相等的,你就必須得用equals()方法。正則表達式
若是你知道「字符串保留(string intern)」的概念那就更好了。編程
2. 爲何安全敏感的字符串信息用char[]會比String對象更好?數組
String對象是不可變的就意味着直到垃圾回收器過來清掃以前它們都不會發生變化的。用數組的話,就能夠很明確的修改它任何位置的字符元素。這樣的話,如密碼等安全敏感的信息就不會出如今系統的任何地方。安全
3. 字符串對象可否用在switch表達式中?ui
從JDK7開始的話,咱們就能夠在switch條件表達式中使用字符串了,也就是說7以前的版本是不能夠的。線程
// java 7 only!orm
switch (str.toLowerCase()) {cdn
case a:對象
value = 1;
break;
case b:
value = 2;
break;
}
4. 如何將字符串轉換爲整型數值?
int n = Integer.parseInt(10);
如此簡單,常常使用有偶爾也會被遺忘。
5. 如何用空格去分隔字符串?
咱們能夠很便捷的使用正則表達式來進行分隔。「\s」就表示空格,還有如」」,」\t」,」\r」,」\n」.
String[] strArray = aString.split(\\s+);
6. substring()方法具體是都幹了些啥?
在JDK6中,這個方法只會在標識現有字符串的字符數組上 給一個窗口來表示結果字符串,可是不會建立一個新的字符串對象。若是須要建立個新字符串對象,能夠這樣在結果後面+一個空的字符串:
str.substring(m, n) +
這麼寫的話就會建立一個新的字符數組來表示結果字符串。同時,這麼寫也有必定的概率讓你的代碼跑的更快,由於垃圾回收器會吧沒有在使用的大字符串回收而留下子字符串。
Oracle JDK7中的substring()方法會建立一個新的字符數組,而不用以前存在的。看看這張圖就會明白substring()方法在JDK6和JDK7中的區別。
7. StringStringBuilderStringBuffer
String vs StringBuilder:StringBuilder是可變的,這就意味你在建立對象以後還能夠去修改它的值。StringBuilder vs StringBuffer:StringBuffer是同步的,意味着它是線程安全的,可是就會比StringBuilder慢些。
8. 如何快速重複構造一段字符串?
在Python編程中,只須要用字符串去乘以一個數字就能夠 搞定了,那在Java編程中,咱們可使用來自Apache Commons Lang包中的StringUtils類的repeat()方法。
String str = abcd;
String repeated = StringUtils.repeat(str,3);
//abcdabcdabcd
9. 如何將時間格式的字符串轉換成date對象?
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. 如何計數一個字符在某個字符串中出現的次數?
使用Apache Commons Lang包中的 StringUtils類就能夠完成這個工做。
int n = StringUtils.countMatches(11112222, 1);
System.out.printl``` n(n);