JAva基礎知識(三)--Stringはequalsと==比較の違いを用いる


"=="オペレータの役割     
1、基本データ型の比較
2、参照がヒープメモリの同じアドレスを指しているかどうかを判断します.
equalsの場所:
Objectクラスでは、Objectはすべてのクラスの親であり、jdkに含まれていますが、ほとんどのシーンには適していません.通常、書き換える必要があります.
public boolean equals(Object obj) {
        return (this == obj);
    }

equalsの役割:
2つの変数が同じオブジェクトへの参照であるかどうかを判断するために使用されます.すなわち、スタック内の内容が同じかどうか、戻り値がブールタイプです.
equalsの基本的な使用:
boolean b = obj1.equals(obj2);

Stringタイプは、参照タイプと基本データタイプを比較する際に異なる機能を持つため、equalsを使用する必要があります.
次のように分析されます.
Stringはオブジェクトとして使用されます
例1:オブジェクトが異なり、内容が同じで、"=="はfalseを返し、equalsはtrueを返す
String s1 = new String("java");
String s2 = new String("java");

System.out.println(s1==s2);            //false
System.out.println(s1.equals(s2));    //true

例2:同じオブジェクト,"=="とequalsの結果は同じである.
String s1 = new String("java");
String s2 = s1;

System.out.println(s1==s2);            //true
System.out.println(s1.equals(s2));    //true

Stringは基本的なタイプとして使用されます
値が異なるとオブジェクトが異なるため、"="はequalsと同じ結果になります.
String s1 = "java";
String s2 = "java";

System.out.println(s1==s2);            //true
System.out.println(s1.equals(s2));    //true

Stringバッファ内に指定した値と同じStringオブジェクトが存在しない場合、仮想マシンはこのために新しいStringオブジェクトを作成し、Stringバッファ内に保存します.
Stringバッファ内に指定した値と同じStringオブジェクトがある場合、仮想マシンはそのために新しいStringオブジェクトを作成せず、既存のStringオブジェクトの参照を直接返します.