[インタビューのよくある質問]:Javaでのequalsと==の違い

1。 "=="

== 比較は変数(スタック)メモリに保存されますオブジェクトの(ヒープ)メモリアドレス、2つのオブジェクトのアドレスが同じであるかどうかを判断するために使用されます。同じオブジェクトを参照していますか比較は、本当の意味でのポインタ操作です。
1.比較は、演算子の両端のオペランドが同じオブジェクトであるかどうかです。
2.コンパイルして渡すには、両側のオペランドが同じタイプである必要があります(親クラスと子クラスの間にある場合があります)。
3.比較はアドレスです。特定のアラビア数字の比較の場合、値はtrueに等しくなります。たとえば、
int a = 10とlongb = 10Lおよびdoublec = 10.0は同じ(true)です。これらは両方ともアドレス10のヒープを指します。

	@Test
    public void test1(){
    
    
        /**
         *   == 比较的是地址,如果是具体的阿拉伯数字的比较,值相等则为true,如:
         *   int a=10 与 long b=10L 与 double c=10.0都是相同的(为true),因为他们都指向地址为10的堆。
         */

        int a=10;
        long b=10L;
        double c=10.0;
        System.out.println(a==b);	//true
        System.out.println(b==c);	//true
        System.out.println(a==c);	//true
    }

2、「等しい」

equalsは、2つのオブジェクトを比較するために使用されます内容が等しいかどうか、すべてのクラスはjava.lang.Objectクラスから継承されているため、すべてのオブジェクトに適用できます。メソッドがカバーされていない場合でも、Objectクラスのメソッドが呼び出され、Objectのequalsメソッドが返されます。の==。

 	@Test
    public void test2(){
    
    
        String a = "1";
        System.out.println("1".equals(a));

    }

3、まとめ

1.すべての比較が等しい場合は等しいが使用され、定数を比較する場合は、定数は前に書かれています、オブジェクトのequalsオブジェクトがnullである可能性があるため、nullポインタが表示されます
。2。Aliのコード仕様では、equalsのみが使用されます。Aliプラグインはデフォルトでそれを認識し、すばやく変更できます。Aliをインストールすることをお勧めします。古いコードのトラブルシューティングを行い、「==」を使用するプラグイン、等しいものに置き換えます

おすすめ

転載: blog.csdn.net/weixin_45496190/article/details/108052884