String類的compareTo方法如下:public?int?compareTo(String?anotherString)?{
????????int?len1?=?value.length;
????????int?len2?=?anotherString.value.length;
????????int?lim?=?Math.min(len1,?len2);
????????char?v1[]?=?value;
????????char?v2[]?=?anotherString.value;//通過(guò)value字段直接拿到了anotherString的字符數(shù)組
????????int?k?=?0;
????????while?(k?<?lim)?{
????????????char?c1?=?v1[k];
????????????char?c2?=?v2[k];
????????????if?(c1?!=?c2)?{
????????????????return?c1?-?c2;
????????????}
????????????k++;
????????}
????????return?len1?-?len2;
????}為什么這里可以直接使用anotherString.value的方式獲取的字符串里面的字符數(shù)組?這個(gè)value字段不是private的么,而且我們自己仿照這樣用xx.value來(lái)獲取某個(gè)字符串的字符數(shù)組也是不行的,只能使用toCharArray函數(shù)來(lái)獲取,為什么String源碼當(dāng)中就行能,百思不得其解啊。。。還請(qǐng)各位大神賜教
1 回答

舊少年
TA貢獻(xiàn)2條經(jīng)驗(yàn) 獲得超1個(gè)贊
個(gè)人一點(diǎn)拙見(jiàn):?
在Java中關(guān)于Java.lang.String類的源代碼中有這樣一個(gè)字段的說(shuō)明 ??
/**?The?value?is?used?for?character?storage.?*/ ????private?final?char?value[];
表明String類的內(nèi)部實(shí)現(xiàn)用的就是字符數(shù)組存儲(chǔ)字符串的,而且它是一個(gè)私有的類成員變量,因此因此xx.value是無(wú)法在外部調(diào)用到的,而comparaTo是String類的成員方法,自然可以調(diào)用到。
添加回答
舉報(bào)
0/150
提交
取消