Java中==比較するものは何ですか?

1059 ワード

1、対象の参照タイプについて:="は対象のメモリアドレスを比較します。例:
public class ArayTest{
public static void main(String[] args){

    String a = new String("aw");
    String b = new String("aw");
    System.out.println(a==b);//false
}
)
aとbオブジェクトの値は同じであるが、メモリ内のアドレスは異なる、すなわち2つのオブジェクトは異なることは明らかである。
もう一つの例を見ます。
public class ArayTest{
public static void main(String[] args){

    String a = new String("aw");
    String b = new String("aw");
    String c= "aa";
    String d= "aa";

    System.out.println(a==b);//false
    System.out.println(c==d);//true
}
)
これは常量池の存在のためです。運行時量池は実は方法区の一部です。簡単に言えば、cとdは全部「a」という常量を指しています。
ただし、ここで注意したいのは、Integerオブジェクトにとって、格納できる範囲は(-128~127)であり、範囲を超えるとヒープメモリに格納される。参照可能:http://blog.csdn.net/shw2004/article/details/5678703
2、基本タイプのデータに対して、実は比較するのはその値です。
参考:http://blog.chinaunix.net/uid-23781137-id-3436455.html http://blog.csdn.net/pony_maggie/articale/detail/43907633http://blog.csdn.net/u012355934/article/details/53494973