Porque o resultado abaixo da false? Não deveria passar a mesma referência do value para a posição 0 dos arrays a e b e retornar true?
String value = "teste";
String[] a = new String[1];
String[] b = new String[1];
a[0] = value;
b[0] = value;
System.out.println(a == b);
se vc comparar a[0] == b[0]
provavelmente vai retornar true
entretanto vc tem dois arrays diferentes. compara-los com operador ==
só vai mostrar que eles apontam para areas diferentes de memoria, o conteudo dos dois é irrelevante ( no caso o conteudo contem outros objetos, porem ainda assim são diferentes )
se isso fosse verdade, vc só precisaria fazer a[0]= value;
Nesse caso você está comparando dois objetos e não dois valores
.
Quando você usa new, esta sendo criado um objeto no heap. As variáveis possuem a referência do objeto que está no heap. Variável a você criou um objeto(array) e para variável b você criou outro objeto(array), portanto cada variável referencia objetos(arrays) diferentes.
Se você quer compara os valores terá que acessar o índice que contém um valor, que no caso é o índice 0.
A comparação seria a[0] == b[0]
que contém o mesmo valor retornando true.
O objeto a ou b retorna a referência do objeto; a[0]
retorna o valor atribuído ao índice 0 do objeto(array).