Amigos, estou fazendo mais um teste aqui, agora com vetores. Veja:
package testejava;
import java.io.*;
import javax.swing.JOptionPane;
/**
*
* @author Vinicius Cesar
*/
public class Teste
{
public Teste()
{
System.out.println("Im am a constructor");
}
/**
* Este método executa um teste na classe.
* Entradas nenhuma
* Saida nenhuma
*/
private void runza()
{
String[] nomes = {};
nomes = new String[4];
nomes[0] = "Joao";
nomes[1] = "Jose".toUpperCase();
nomes[2] = nomes[1].replace("o", "o");
nomes[3] = nomes[1];
for (String str:nomes)
{
System.out.println(str);
}
if (nomes[2] == nomes[1])
{
System.out.println("nomes[2] é igual a nomes[1]");
}
if (nomes[2] == nomes[1])
{
System.out.println("nomes[3] é igual a nomes[1]");
}
}
public static void main(String args[])
{
Teste tst = new Teste();
tst.runza();
}
}
//</editor-fold>
Observem as linhas 27 e 28
nomes[2] = nomes[1].replace("o", "o");
nomes[3] = nomes[1];
Na linha 27 ela faz referencia ao objeto String que está armazenado na posição 2 do vetor e apenas chama um método dele (replace()).
Na linha 28 ele “iguala”, então agora nomes[3] referencia nomes[1].
Neste caso na linha 27 ele retornaria um outro objeto e na linha 28 ele apenas pegaria a referencia do objeto?
Obs. Eu usei o “==” de proposito pois quero compara o objeto em sí (a referencia) e não o conteudo.
Desde já agradeço a todos pela ajuda.