這也是自己第二次回過頭來啃java基礎書,小生自認為愚昧無知。如果大神有好的教育,可以評論私信。以下都是我的看法:
為什麼說char
呢,我這裡先賣個關子。在java中,char是用unicode編碼的,占16位(2位元組)。從ansi編碼(1位元組)到unicode編碼(2字
節)。java中使用unicode的原因是,java的applet(網頁)運作,unicode裡面包含最多最廣比如:中
文,english,spanish,german, french等。是以,char屬于java的基本類型之一,使用也很友善。
這裡我就解答則個關子,剛才為啥說string和char密切相關。因為java字元串string就是char值序列(其實就是final的char數組)組成。在源碼中很好的證明了這一點:
為了證明上面的東西,大家可以來寫一段好玩的代碼:
運作後你可以看到以下輸出:
但有些人不要誤解,比如java的
以為它就是想c語言中的 char name[]="jeff li"; 這種認知是錯誤的,其他它更像char*指針:
最常見的也是最經常被使用的 boolean equals()分析,源碼如下:
從源碼中慢慢道來:例子(a.equals(b))
第一:if (this == anobject)
//this代表a,其實就是判斷其b對象是否和a的引用型變量表示的是兩個變量在堆中存儲的位址(就是棧引用一樣内容自然一樣)。
第二: if (anobject instanceof string)
//java 中的instanceof 運算符是用來在運作時指出對象是否是特定類的一個執行個體。這句話為了下面強轉 string anotherstring = (string) anobject;
第三:我剛開始有些疑惑源碼中的:我覺得是string類型的anotherstring擷取到char值序列(char[]),這就回到了前面内容。
猜測是如上意思,如果大牛有的可以說的地方,請說。因為我自己想實作一個簡單的stringcopy時,這個老是不行,不知道為什麼。
第四:剩下的就是char[]直接循環比較了。
還有些常用的 split (正則) format 這裡不發表一一看法了。
另外有一句很好的代碼分享:來自org.apache.commons.lang