String s1 = “abc”;
String s2 = new String(“abc”);
System.out.println(s1==s2); //false 原因???
String s3 = “你好吗”;
String s4 =”你”;
String s5 =”好吗”;
System.out.println(s3==(s4+s5)) //false 原因????
1,s1指向的是常量池中的字符串,s2通过new关键字使得s2指向的空间为堆内存,s1,s2相当于两个指针,它们指向了不同的地址,而 == 号比较的是地址,故而是false;
2,s3指向了”你好吗“,s4指向了”你“,s5指向了”号码“,只能说s3与(s4+s5)的值是相同的,此时应当用equals()方法,才能得到true, == 号比较的是地址,s3,s4,s5指向的是三块不同的地址,所以就是false啦。 |