Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为什么toCharArray()为相同的对象返回不同的值?_Java_String - Fatal编程技术网

Java 为什么toCharArray()为相同的对象返回不同的值?

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

下面的程序从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

与不可变的
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
方法返回一个新分配的数组。所以每次调用时都会得到不同的数组。你是在问为什么这个方法是这样设计的吗-