Mas uma dúvida tosca sobre alguns objetos

2 respostas
vinians

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.

2 Respostas

drsmachado

String é um objeto.
== só é utilizado para primitivos.
Assim sendo, chame o método Object.equals(Object)
O método equals é herdado da superclasse Object, pode ser invocado por qualquer objeto.

vinians

drsmachado:
String é um objeto.
== só é utilizado para primitivos.
Assim sendo, chame o método Object.equals(Object)
O método equals é herdado da superclasse Object, pode ser invocado por qualquer objeto.

Sim amigão, eu sei, mas eu quero comparar justamente a referencia…

Criado 9 de maio de 2011
Ultima resposta 9 de mai. de 2011
Respostas 2
Participantes 2