我想澄清一下我是否理解正确:
== - >是参考比较,即两个对象都指向相同的内存位置.equals() - >计算对象中值的比较我的理解是正确的吗?
可能重复:
如何比较Java中的字符串?
String s1 = "andrei";
String s2 = "andrei";
String s3 = s2.toString();
System.out.println((s1==s2) + " " + (s2==s3));
Run Code Online (Sandbox Code Playgroud)
给出以下代码为什么第二个比较s2 == s3为真?实际上s2.toString()返回的是什么?实际位于何处(s2.toString())?
String string1 = "Hi there";
String string2 = "Hi";
String string3 = "Hi";
System.out.println(string1.substring(0, string2.length()) == string2); //1
System.out.println(string1.substring(0, string2.length()).equals(string2)); //2
System.out.println(string1.substring(0, string2.length()).compareTo(string2)); //3
System.out.println(string2 == string3); //4
System.out.println(string2.substring(0) == string3); //5
System.out.println(string2.substring(0) == string3.substring(0)); //6
Run Code Online (Sandbox Code Playgroud)
给我输出:
false
true
0
true
true
true
Run Code Online (Sandbox Code Playgroud)
我真的不明白第一行,为什么它给我假?
如果我向字符串2添加一个空格,这行我得到假,但如果我没有添加空格,我会得到:
System.out.println(string2.substring(0, string3.length()) == string3);
Run Code Online (Sandbox Code Playgroud)
为什么第1行给我假,但第6行是真的,但是如果我给string2添加一个空格,那就错了..
谢谢=)