Comparando a referência de argumentos da linha de comando, retorne false, enquanto a matriz de String retorna true [duplicate]
Esta pergunta já tem uma resposta aqui:
Como eu comparo strings em Java? 23 respostasAtualmente, estou trabalhando com manipulação de String e, durante a demonstração, encontrei algum comportamento diferente.
Abaixo está o meu código.
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]));
}
}
E fora do código acima é. Estou executando código passando argumentos de linha de comando.
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
Aqui eu tenho duas consultas.
se eu comparar a referência da String str1 == str3, ela retornará false porque str3 é criada usandonova String para que não residam no pool de String, então comostr1 == strArray1 [1] retorna verdadeiro??
strArray [0] == strArray [1] retornará true, strArray1 [0] == strArray1 [1] também retornará true, então por que o argumento da linha de comandoargs [0] == args [1] retornam false??
Por favor, guie.