String的== 和equal

示例代码:

 1 public class ArrayTest {
 2     
 3     public static void main(String[] args){
 4         
 5         int[] c = new int[]{};
 6         
 7         char[] a = new char[]{'a','b'};
 8         
 9         int[][] s = new int[][]{{11,1,1},{2,2,22},{3,33,333,3333}};
10         
11         List<String> b = new ArrayList<String>();
12         b.add("zzz");
13         b.add("ccc");
14         
15         System.out.println(a);
16         System.out.println(b);
17         System.out.println(s[1][2]);
18         
19         //以下为正文
20         String str1 = new String("AAA");
21         String str2 = new String("AAA");
22         String str3 = "AAA";
23         String str4 = "AAA";
24         
25         System.out.println("new等于比较  " + (str1==str2) );
26         System.out.println("new equal比较 " + str1.equals(str2));
27         System.out.println("等于比较 " + (str1 == str3));
28         System.out.println("equal比较" + str1.equals(str3));
29         
30         System.out.println("等于比较" + (str3 == str4));
31         System.out.println("equal比较" + str3.equals(str4));
32         
33         
34     }
35 
36 }

返回结果:

结论:

new会新申请内存区创建了两个对象,地址不同,== 得到的结果是false;而用“=”直接赋值时,会先检查内存是否有相同的字符串,如果有则把引用指向该内存区,否则才会新建一个对象,所以是true。疑问:为什么new的和=的 ‘==’判断时不相等?

参考:http://www.cnblogs.com/air5/archive/2011/11/22/2258972.html。

posted @ 2015-11-03 16:26  *Zhou神Bu坑*  阅读(110)  评论(0)    收藏  举报