我做了一个像下面这样的简单代码,当在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]:它们的长度和字符相同,但是比较的结果不同。那真是怪了。 任何人都可以知道,请分享。
答案 0 :(得分:2)
在这里,您正在比较:
boolean b = str.equals(arr[0]);
但是str
是abcdef
,而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
吗?