Java 为什么toCharArray()为相同的对象返回不同的值?
下面的程序从toCharArray()函数返回3个不同的值。有人能告诉我为什么吗Java 为什么toCharArray()为相同的对象返回不同的值?,java,string,Java,String,下面的程序从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 a
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
与不可变的
String
对象不同,字符数组是可变的。这意味着要求每次调用toCharArray
都必须创建并返回不同的对象,即使在同一String
对象上调用它也是如此
String a = "a";
char[] a1 = a.toCharArray();
char[] a2 = a.toCharArray();
System.out.println(a1==a2); // Prints "false"
根据Javadoc for
String
,toCharArray
方法返回一个新分配的数组。所以每次调用时都会得到不同的数组。你是在问为什么这个方法是这样设计的吗-