String s1 = "hello";
String s2 = "world";
String s3 = "helloworld";
System.out.println(s3 == s1 + s2);// false
System.out.println(s3.equals((s1 + s2)));// true
System.out.println(s3 == "hello" + "world");// true! 先执行两个常量字符串拼接,再在字符串常量池中匹配,如存在,直接指向拼接串地址
System.out.println(s3.equals("hello" + "world"));// true
**另特别注意以下程序
String s4 = "say" + s1;
String s5 = "say" + s1;
**// s1是变量,s5在运行时才知道具体值,所以s4和s5是不同的对象,地址值不同 注意与两个常量拼接相区分!
System.out.println("s4和s5内存地址相同吗?" + (s5 == s4)); //false
System.out.println("s4和s5值相同吗?" + (s5.equals(s4))); //true |
|