[java] String#equals のソースを読んでみる

同一文字列かどうかを判定する

public boolean equals(Object anObject) {
  if (this == anObject) {
    return true;
  }
  if (anObject instanceof String) {
    String anotherString = (String)anObject;
    int n = count;
    if (n == anotherString.count) {
      char v1[] = value;
      char v2[] = anotherString.value;
      int i = offset;
      int j = anotherString.offset;
      while (n-- != 0) {
        if (v1[i++] != v2[j++])
          return false;
      }
      return true;
    }
  }
  return false;
}
  1. 同一インスタンスであれば true
  2. String のインスタンスでない場合は false
  3. 文字列の長さが同じでない場合は false
  4. 先頭から文字を比較していく

ながーい文字列で、おしりだけ違うとかだと効率悪いって事ね。