Javaの文字列の比較との違いは==に等しいです

public class StringTest {
    public static void main(String[] argc){
        String a="abc";
        String b="abc";
        String c=new String("abc");
        System.out.println(a==b);
        System.out.println(a==c);
        System.out.println(a.equals(c));
    }
}
true
false
true

これは、同じアドレスの理由を、Bにとして、値の比、およびアドレス==比較に等しい文字列定数プールに関連する問題、あなたはので、aとb点のブログを空想することができますメモリ内の同一アドレスに、偶数==比較するように、truueであり、そしてC新しい文字列(「ABC」)を用いて、Javaはそのメモリ内に、ABCの値を保持するための新しいオブジェクトを作成しますABC割り当てられたメモリは、前のものとは異なる、及びCを参照新しいメモリアドレスに格納されている、すなわち、それは、Cのアドレスを指し、そして異なる、偽

文字列s = "ABCD"

sが、それはちょうどこのメモリ領域は、スペースを占有大きいメモリ内のメモリ領域、より多くのメンバ変数、オブジェクトへの参照ですよ、オブジェクトではありません。参考文献は、それがアドレスをポイントするオブジェクト内に格納されている4バイトのデータが、このアドレスは、オブジェクトをアクセスすることができます

おすすめ

転載: blog.csdn.net/abc_123456___/article/details/90705677