【发布时间】:2016-01-29 07:01:29
【问题描述】:
目前我正在处理字符串操作,在进行演示时我发现了一些不同的行为。
下面是我的代码。
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]:: false
这里我有两个问题。
如果我比较 String str1==str3 的引用,那么它将返回 false,因为 str3 是使用 new String 创建的,因此不会驻留在字符串池中,那么 str1 如何==strArray1[1] 返回真??
strArray[0]==strArray[1] 会返回 true,strArray1[0]==strArray1[1] 也会返回 true 那么为什么命令行参数 args[0]==args[1 ] 返回错误??
请指导。
【问题讨论】:
-
您从未向我们展示过作为命令行参数传入的值。
-
实际上我对使用新参数和命令行参数创建的字符串数组感到困惑。
-
@TimBiegeleisen 他确实做到了
-
@TimBiegeleisen java HelloWorld Hello Hello
-
@ScaryWombat 没看到...它没有格式化为代码:-(
标签: java string command-line-arguments string-pool