比较从char []创建的字符串

时间:2016-02-10 17:03:37

标签: java string compare

我的代码比较了两个单词之间的相等性。它打印一个值" TRUE"如果字符串相等。否则它返回false。 Java"等于"功能正在使用

class k{  

    public static void main(String args[]){  
        String s1="Sach";  
        String s2=word();  
        String s3=new String("Sach");   
        System.out.println(s1.equals(s2));  
        System.out.println(s1.equals(s3));      
    } 

    public static String word() {
        char[] str=new char[100];
        str[0]='S';
        str[1]='a';
        str[2]='c';
        str[3]='h';
        String ss=new String(str);
        System.out.println(ss);
        return ss;
    }
} 

我需要将一些选定的字母提取到数组中并将其转换为字符串。转换后,该函数返回字符串。但是比较会导致错误的值。是否有其他方法将数组转换为字符串,以便该程序提供正确的结果。

1 个答案:

答案 0 :(得分:5)

您在方法中创建新String的字符数组有4个以上的字符,所以当然它不会与其他String相等。

准确地说,您的数组包含您指定的4个字符和另外96个空字符('\ u0000'),因为您没有指定值并且使用了默认值。

更新方法只指定一个包含4个字符的数组,如下所示,您将获得预期的结果。:

public static String word() {
    char[] str = new char[4];
    str[0] = 'S';
    str[1] = 'a';
    str[2] = 'c';
    str[3] = 'h';
    String ss = new String(str);
    System.out.println(ss);
    return ss;
}

同样如注释中所述,您可以清除方法,而不必按如下方式指定数组长度:

public static String word() {
    char[] str = new char[] {'S', 'a', 'c', 'h'};
    return new String(str);
}