ホームページ  >  記事  >  ウェブフロントエンド  >  JavaとJavaScriptにおける2つの文字列が等しいかどうかの判定の違いを詳しく紹介

JavaとJavaScriptにおける2つの文字列が等しいかどうかの判定の違いを詳しく紹介

黄舟
黄舟オリジナル
2017-03-20 14:56:561433ブラウズ

この記事では、2 つの 文字列が等しいかどうかを判断する際の Java と JavaScript の違いを主に紹介します。これは非常に優れており、必要な方は参考にしてください。JavaScript は一般的に使用されるスクリプト言語です。また、Javascript で 2 つの文字列が等しいかどうかを判断するには、C++ の String クラスを使用して判断するのと同じです。 2 つの文字列が等しいかどうかを判断するには、equals() メソッドまたは CompareTo() メソッドを使用する必要があります。それは、equals() メソッドのパラメーターの型です。パラメータの型は String クラスではなく、Object クラスであることは間違いありません。

いくつかの国内チュートリアルでは String クラスが記述されています (o(╯□╰)o)

ソースコードをご覧ください。 JDK の:

public boolean equals(Object anObject) {
    if (this == anObject) {
      return true;
    }
    if (anObject instanceof String) {
      String anotherString = (String) anObject;
      int n = value.length;
      if (n == anotherString.value.length) {
        char v1[] = value;
        char v2[] = anotherString.value;
        int i = 0;
        while (n-- != 0) {
          if (v1[i] != v2[i])
              return false;
          i++;
        }
        return true;
      }
    }
    return false;
  }

パラメーターの型が Object クラスであることがわかります。ところで、このコードについて言えば、まず 2 つの参照が同じかどうかを判断します。参照が同じであれば、エンティティは当然です。次に、クラスの変換が含まれます:

サブクラスによって作成された

オブジェクト

を親クラスに割り当てます。これを上向き変換のオブジェクトと呼びます。これに基づいて、親クラスのオブジェクトをサブクラスのオブジェクトに変換することもできます。簡単に言うと、クラス間の変換には一定の条件があり、その判断にinstanceofを使用する必要があります。


各クラスのequals()メソッドはObjectクラスから派生しているため、equals()メソッドのパラメータの型がObjectクラスであることを理解するのは難しくありません。 Java の 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;
    int k = 0;
    while (k < lim) {
      char c1 = v1[k];
      char c2 = v2[k];
      if (c1 != c2) {
        return c1 - c2;
      }
      k++;
    }
    return len1 - len2;
  }
compareTo() のパラメーターは String クラスです。 ps: 1 つは継承に由来し、もう 1 つはインターフェイスに由来します。これが、2 つのパラメーターの型が一致しない理由です。

以上がJavaとJavaScriptにおける2つの文字列が等しいかどうかの判定の違いを詳しく紹介の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。