目前我正在使用字符串操作,在进行演示时我发现了一些不同的行为。
下面是我的代码。
public class HelloWorld{
public static void main(String []args){
String str1 = "Hello";
String str2 = "Hello";
String str3 = new String("Hello");
String strArray[] = {"Hello","Hello"};
String strArray1[] = new String[] {"Hello","Hello"};
System.out.println("str1==str2:: "+(str1==str2));
System.out.println("str1==str3:: "+(str1==str3));
System.out.println("strArray[0]==strArray[1]:: "+(strArray[0]==strArray[1]));
System.out.println("str1==strArray[1]:: "+(str1==strArray[1]));
System.out.println("strArray1[0]==strArray1[1]:: "+(strArray1[0]==strArray1[1]));
System.out.println("str1==strArray1[1]:: "+(str1==strArray1[1]));
System.out.println("args[0]==args[1]:: "+(args[0]==args[1]));
}
}
上面的代码是。我正在运行传递命令行参数的代码。
java HelloWorld Hello Hello
str1==str2:: 真
str1==str3:: 假
strArray[0]==strArray[1]:: 真
str1==strArray[1]:: 真
strArray1[0]==strArray1[1]:: 真
str1==strArray1[1]:: 真
args[0]==args[1]:: 假
在这里,我有两个疑问。
如果我比较字符串 str1==str3 的引用,那么它将返回 false,因为 str3 是使用新字符串创建的,因此不会驻留在字符串池中,那么str1==strArray1[1] 如何返回 true?
strArray[0]==strArray[1] 会返回 true,strArray1[0]==strArray1[1] 也会返回 true 那么为什么命令行参数args[0]==args[1] 返回 false呢?
请指导。