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

时间:2015-03-01 13:17:20

标签: 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 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

1 个答案:

答案 0 :(得分:3)

immutable String对象不同,字符数组是可变的。这意味着要求toCharArray的每次调用都必须创建并返回不同的对象,即使您在同一个String对象上调用它也是如此。

String a = "a";
char[] a1 = a.toCharArray();
char[] a2 = a.toCharArray();
System.out.println(a1==a2); // Prints "false"

Demo.