值和引用

JDK1.6 
        Integer v1  =   100 ;
        Integer v2 
=   100 ;
        System.out.println(v1 
==  v2);  //  输出:true
        
        Integer w1 
=   200 ;
        Integer w2 
=   200 ;
        System.out.println(w1 
==  w2);  //  输出:false

        Integer s1 
=   new  Integer( 100 );
        Integer s2 
=   new  Integer( 100 );
        System.out.println(s1 
==  s2);  //  输出:false
        
        String str1
= " test " ;
        String str2
= " test " ;
        System.out.println(str1
== str2); //  输出:true
        
        String nstr1
= new  String( " aa " );
        String nstr2
= new  String( " aa " );
        System.out.println(nstr1
== nstr2);  //  输出:false

原因: 当给 Integer 变量直接赋整数值时,如果这个数值位于 [-128,127] 内, JVM Java Virtual Machine )就直接使用 cache 中缓存的 Integer 对象,否则, JVM 会重新创建一个 Integer 对象。

参考:
http://www.cnblogs.com/bitfan/archive/2010/10/24/1859687.html

你可能感兴趣的:(值和引用)