Java 中字符串比较结果的差异?
Difference in the results of String comparison in Java?
Java如何实现下面的字符串比较
public class MyClass {
public static void main(String args[]) {
String a = "Chaipau";
String b = "pau";
System.out.println(a == "Chai"+"pau"); //true
System.out.println(a == "Chai"+b); //false
}
}
这与 How do I compare strings in Java? 不同,因为答案不包含为什么在第二种情况下创建新对象,而它本可以指向与第一种情况相同的对象引用案例.
"Chai"+"pau"
在语义上与 "Chaipau"
相同,因此与 a
指的是同一个实例。
"Chai"+b
在运行时计算(因为 b
不是编译时常量表达式),创建 String
的新实例,因此与a
指的是。
Java如何实现下面的字符串比较
public class MyClass {
public static void main(String args[]) {
String a = "Chaipau";
String b = "pau";
System.out.println(a == "Chai"+"pau"); //true
System.out.println(a == "Chai"+b); //false
}
}
这与 How do I compare strings in Java? 不同,因为答案不包含为什么在第二种情况下创建新对象,而它本可以指向与第一种情况相同的对象引用案例.
"Chai"+"pau"
在语义上与 "Chaipau"
相同,因此与 a
指的是同一个实例。
"Chai"+b
在运行时计算(因为 b
不是编译时常量表达式),创建 String
的新实例,因此与a
指的是。