在subString和String数组的元素之间进行比较时,equals()方法返回false

时间:2018-12-03 17:52:28

标签: java substring equals

我做了一个像下面这样的简单代码,当在subString和String数组的元素之间进行比较时,我不明白为什么它是假的。

public static void main(String[] args) {
    String str = "abcdef";
    String str1 = str.substring(0, 4);
    String str2 = "abcd";

    String[]arr = new String [10];
    System.out.println(arr [0 ]+ " - " + str1);                 //output: null - abcd
    arr[0] = str1;
    System.out.println("after: " +  arr [0] + " - " + str1);    //output: after: abcd - abcd

    boolean b = str.equals(arr[0]);
    System.out.println(b);                                      //output: false
    System.out.println(str1.equals(str2));                      //output: true

    System.out.println(str1.length() +  " " + str2.length() + " " + arr[0].length()); //output: 4 4 4
}

str1,str2,arr [0]:它们的长度和字符相同,但是比较的结果不同。那真是怪了。 任何人都可以知道,请分享。

2 个答案:

答案 0 :(得分:2)

在这里,您正在比较:

    boolean b = str.equals(arr[0]);

但是strabcdef,而arr[0]str1,也就是abcd。因此它们是不相等的。

答案 1 :(得分:0)

boolean b = str.equals(arr[0]);

你是说

boolean b = str1.equals(arr[0]);

boolean b = str2.equals(arr[0]);

还是您认为

String str1 = str.substring(0, 4);

修改str吗?