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。

浙公网安备 33010602011771号