好程式設計師Java教程分享Java中String型別的10個問題
好程式設計師Java教程分享Java中String型別的10個問題
1. 如何比較兩個字串?用“=”還是equals
簡單來說,“==”是用來檢測倆引用是不是指向記憶體中的同一個物件,而equals()方法則檢測的是兩個物件的值是否相等。只要你想檢測倆字串是不是相等的,你就必須得用equals()方法。
如果你知道“字串保留(string intern)”的概念那就更好了。
2. 為什麼安全敏感的字串資訊用char[]會比String物件更好?
String物件是不可變的就意味著直到垃圾回收器過來清掃之前它們都不會發生變化的。用陣列的話,就可以很明確的修改它任何位置的字元元素。這樣的話,如密碼等安全敏感的資訊就不會出現在系統的任何地方。
3. 字串物件能否用在switch表示式中?
從JDK7開始的話,我們就可以在switch條件表示式中使用字串了,也就是說7之前的版本是不可以的。
1<span
class="hljs-comment"
style="color: rgb(153, 153, 136);">// java 7 only!</span>
2<span
class="hljs-keyword"
style="font-weight: bold;">switch</span> (str.toLowerCase()) {
3
<span
class="hljs-keyword"
style="font-weight: bold;">case</span> <spanclass="hljs-string"
style="color: rgb(221, 17, 68);">"a"</span>:
4
<span
class="hljs-keyword"
style="font-weight: bold;">value</span> = <spanclass="hljs-number"
style="color: rgb(0, 128, 128);">1</span>;
5
<span
class="hljs-keyword"
style="font-weight: bold;">break</span>;
6
<span
class="hljs-keyword"
style="font-weight: bold;">case</span> <spanclass="hljs-string"
style="color: rgb(221, 17, 68);">"b"</span>:
7
<span
class="hljs-keyword"
style="font-weight: bold;">value</span> = <spanclass="hljs-number"
style="color: rgb(0, 128, 128);">2</span>;
8
<span
class="hljs-keyword"
style="font-weight: bold;">break</span>;
9}
4. 如何將字串轉換為整型數值?
1<span class="hljs-keyword" style="font-weight: bold;">int</span> n = Integer.parseInt(<span class="hljs-string" style="color: rgb(221, 17, 68);">"10"</span>);
如此簡單,經常使用有偶爾也會被遺忘。
5. 如何用空格去分隔字串?
我們可以很便捷的使用正規表示式來進行分隔。“\s”就表示空格,還有如””,”\t”,”\r”,”\n”.
1<span class="hljs-type" style="color: rgb(68, 85, 136); font-weight: bold;">String</span>[] strArray = aString.<span class="hljs-built_in"style="color: rgb(0, 134, 179);">split</span>(<span class="hljs-string"style="color: rgb(221, 17, 68);">"\\s+"</span>);
6. substring()方法具體是都幹了些啥?
在JDK6中,這個方法只會在標識現有字串的字元陣列上 給一個視窗來表示結果字串,但是不會建立一個新的字串物件。如果需要建立個新字串物件,可以這樣在結果後面+一個空的字串:
1str.substring(m, n) + <span class="hljs-string" style="color: rgb(221, 17, 68);">""</span>
這麼寫的話就會建立一個新的字元陣列來表示結果字串。同時,這麼寫也有一定的機率讓你的程式碼跑的更快,因為垃圾回收器會吧沒有在使用的大字串回收而留下子字串。
Oracle JDK7中的substring()方法會建立一個新的字元陣列,而不用之前存在的。看看這張圖就會明白substring()方法在JDK6和JDK7中的區別。
7. String&StringBuilder&StringBuffer
String vs StringBuilder:StringBuilder是可變的,這就意味你在建立物件之後還可以去修改它的值。StringBuilder vs StringBuffer:StringBuffer是同步的,意味著它是執行緒安全的,但是就會比StringBuilder慢些。
8. 如何快速重複構造一段字串?
在Python程式設計中,只需要用字串去乘以一個數字就可以 搞定了,那在Java程式設計中,我們可以使用來自Apache Commons Lang包中的StringUtils類的repeat()方法。
1<span
class="hljs-built_in"
style="color: rgb(0, 134, 179);">String</span> str = <span
class="hljs-string"
style="color: rgb(221, 17, 68);">"abcd"</span>;
2<span
class="hljs-built_in"
style="color: rgb(0, 134, 179);">String</span> repeated = StringUtils.repeat(str,<span
class="hljs-number"
style="color: rgb(0, 128, 128);">3</span>);
3<span
class="hljs-comment"
style="color: rgb(153, 153, 136);">//abcdabcdabcd</span>
9. 如何將時間格式的字串轉換成date物件?
1<span
class="hljs-built_in"
style="color: rgb(0, 134, 179);">String</span> str = <span
class="hljs-string"
style="color: rgb(221, 17, 68);">"Sep 17, 2013"</span>;
2<span
class="hljs-built_in"
style="color: rgb(0, 134, 179);">Date</span> date = <span
class="hljs-keyword"
style="font-weight: bold;">new</span> SimpleDateFormat(<span
class="hljs-string"
style="color: rgb(221, 17, 68);">"MMMM d, yy"</span>, Locale.ENGLISH).parse(str);
3System.out.println(date);
4<span
class="hljs-comment"
style="color: rgb(153, 153, 136);">//Tue Sep 17 00:00:00 EDT 2013</span>
10. 如何計數一個字元在某個字串中出現的次數?
使用Apache Commons Lang包中的 StringUtils類就可以完成這個工作。
1<span
class="hljs-keyword"
style="font-weight: bold;">int</span> n = StringUtils.countMatches(<span
class="hljs-string"
style="color: rgb(221, 17, 68);">"11112222"</span>, <span
class="hljs-string"
style="color: rgb(221, 17, 68);">"1"</span>);
2System.out.printl<span
class="hljs-string"
style="color: rgb(221, 17, 68);">``</span><span
class="hljs-string"
style="color: rgb(221, 17, 68);">` n(n);</span>
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69913892/viewspace-2663351/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 好程式設計師Java教程分享Java中經常出現的問題程式設計師Java
- 好程式設計師Java教程分享面試中Spring的技術問題程式設計師Java面試Spring
- 好程式設計師Java教程分享幾個流行的Java框架程式設計師Java框架
- 好程式設計師Java教程分享Java中this的幾種用法程式設計師Java
- 好程式設計師Java教程分享Java語法程式設計師Java
- 好程式設計師Java教程分享Java之設計模式程式設計師Java設計模式
- 好程式設計師Java教程分享Java面試題之Hibernate程式設計師Java面試題
- 好程式設計師Java教程分享Java難點解析之泛型程式設計師Java泛型
- 好程式設計師Java教程分享:Java工程師常見面試題程式設計師Java工程師面試題
- 好程式設計師Java培訓分享20個Java程式設計師基礎題程式設計師Java
- 好程式設計師Java教程分享Java面試妙招程式設計師Java面試
- 好程式設計師Java教程分享Java開發工具程式設計師Java
- 好程式設計師Java教程分享List介面程式設計師Java
- 好程式設計師Java教程分享javaweb框架程式設計師JavaWeb框架
- 好程式設計師Java教程分享Java實習生面試題集錦程式設計師Java面試題
- 好程式設計師Java教程分享經典Java main方法面試題程式設計師JavaAI面試題
- 好程式設計師分享:Java面試題常見問題程式設計師Java面試題
- 好程式設計師Java教程分享Java開發主流框架程式設計師Java框架
- 好程式設計師Java教程分享Java 迴圈結構程式設計師Java
- 好程式設計師Java教程分享XML常見面試題程式設計師JavaXML面試題
- 好程式設計師Java教程分享jsp相關面試題程式設計師JavaJS面試題
- 好程式設計師Java學習路線分享Java-String常用方法程式設計師Java
- 好程式設計師Java分享Javamain十個面試題程式設計師JavaAI面試題
- 好程式設計師Java培訓分享Java EE與Java的區別程式設計師Java
- 好程式設計師Java教程分享Java的4大核心基礎程式設計師Java
- 好程式設計師Java教程分享Java的五大特點程式設計師Java
- 好程式設計師Java教程分享如何系統的學習Java程式設計師Java
- 好程式設計師Java教程分享Java面試常見技術難題程式設計師Java面試
- 好程式設計師Java培訓分享Java和HTML的區別?程式設計師JavaHTML
- 好程式設計師Java教程分享Java設計模式的6大原則程式設計師Java設計模式
- 好程式設計師Java培訓分享Java中級面試題合集程式設計師Java面試題
- 好程式設計師web前端教程分享引用型別與基本型別程式設計師Web前端型別
- 好程式設計師Java教程分享JavaScript常見面試題一程式設計師JavaScript面試題
- 好程式設計師Java教程分享JavaScript常見面試題五程式設計師JavaScript面試題
- 好程式設計師Java教程分享JavaScript常見面試題四程式設計師JavaScript面試題
- 好程式設計師Java教程分享JavaScript常見面試題三程式設計師JavaScript面試題
- 好程式設計師Java教程分享JavaScript常見面試題二程式設計師JavaScript面試題
- 好程式設計師Java教程分享Jmeter效能測試程式設計師JavaJMeter