現在、私は文字列操作に取り組んでおり、デモを行っているときに、いくつかの異なる動作を見つけました。
以下は私のコードです。
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:: true
str1==str3:: false
strArray[0]==strArray[1]:: true
str1==strArray[1]:: true
strArray1[0]==strArray1[1]:: true
str1==strArray1[1]:: true
args[0]==args[1]:: false
ここに 2 つのクエリがあります。
文字列 str1==str3 の参照を比較すると、str3 は新しい文字列を使用して作成され、文字列プールに存在しないため、false が返されます。
strArray[0]==strArray[1] は true を返し、strArray1[0]==strArray1[1] も true を返すのに、コマンド ライン引数args[0]==args[1] が falseを返すのはなぜですか??
ガイドしてください。