我一直在試圖瞭解一些API方法的工作確實String.equals()是如何工作的
下面爲java.lang.String的類的equals方法的一個片段
能有人出來告訴我實際上代碼是如何比較兩個字符串的。 我明白了count的意義,但偏移意味着什麼。這些變量如何獲得價值?
就像當我創建一個字符串。這些如何初始化。
詳細的逐行描述以及如何以及何時實例變量,值,計數,偏移等被初始化?
public boolean equals(Object anObject) {
1014 if (this == anObject) {
1015 return true;
1016 }
1017 if (anObject instanceof String) {
1018 String anotherString = (String)anObject;
1019 int n = count;
1020 if (n == anotherString.count) {
1021 char v1[] = value;
1022 char v2[] = anotherString.value;
1023 int i = offset;
1024 int j = anotherString.offset;
1025 while (n-- != 0) {
1026 if (v1[i++] != v2[j++])
1027 return false;
1028 }
1029 return true;
1030 }
1031 }
1032 return false;
1033 }
這就是這麼幹淨..謝謝。 –
還有一個問題,我找不到一個正在初始化這些實例變量的構造函數。有一個嗎?這是由JVM處理的。? –
剛剛更新了默認ctor的字符串,這些初始化的答案 – RNJ