以下程序从toCharArray()函数返回3个不同的值。谁能告诉我为什么会这样?
public class StrEqual {
public static void main(String args[]){
String s1="hi";
String s2=new String("hi");
String s3="hi";
if(s1==s2){
System.out.println("s1 and s2 equal");
}else{
System.out.println("s1 and s2 not equal");
}
if(s1==s3){
System.out.println("s1 and s3 equal");
}else
{
System.out.println("s1 and s3 not equal");
}
System.out.printf("\n%s",s1.toCharArray());
System.out.printf("\n%s",s2.toCharArray());
System.out.printf("\n%s",s3.toCharArray());
}//end main
}//end StringComparision
答案 0 :(得分:3)
与 immutable 的String
对象不同,字符数组是可变的。这意味着要求toCharArray
的每次调用都必须创建并返回不同的对象,即使您在同一个String
对象上调用它也是如此。
String a = "a";
char[] a1 = a.toCharArray();
char[] a2 = a.toCharArray();
System.out.println(a1==a2); // Prints "false"