Dúvida String

5 respostas
Z

Galera eu estava vendo solução de uma questão de um testkiller aqui no Guj mesmo e fiquei na dúvida:

public class Brand{

String teste = "teste"; //<<<quando eu faço isso eu estou criando a String teste e referenciando a variável teste para ela.

public String metodo(){
String teste = "teste"; //<<< quando eu faço isso não estou criando a string estou apenas referenciando a variável teste a ela, pq ao executar o metodo a JVM vê que temos uma String a ser criada e cria automaticamente, por isso não estou "criando" e apenas referenciando, é isso mesmo?????Nunk tinha lido nada a respeito.
}

Vlws

5 Respostas

Matheus_Leandro_Ferr
Zabimaru:
Galera eu estava vendo solução de uma questão de um testkiller aqui no Guj mesmo e fiquei na dúvida:
public class Brand{

String teste = "teste"; //<<<quando eu faço isso eu estou criando a String teste e referenciando a variável teste para ela.

public String metodo(){
String teste = "teste"; //<<< quando eu faço isso não estou criando a string estou apenas referenciando a variável teste a ela, pq ao executar o metodo a JVM vê que temos uma String a ser criada e cria automaticamente, por isso não estou "criando" e apenas referenciando, é isso mesmo?????Nunk tinha lido nada a respeito.
}

Vlws

Então, acho que você está se enganando... pois nos 2 (dois) exemplos você está criando uma String nova. Uma fora do método, no qual poderemos considerar uma variavel "global" e a outra dentro do método, que poderemos chama-la de variavel local.

Nunca se esqueça de que um método não void, sempre necessita de um retorno. Ficando:

public String metodo(){
String teste = "teste";
return teste;
}

Por exemplo: Você criou uma variavel static "global" na sua classe:

public class Brand{   
  
public static String teste = "teste";

Assim, você poderia utiliza-la em outro método static sem necessitar criar outra variavel:

public static
String			Metodo()
{
      teste = "olá";

      return teste;
}

E assim vai..

Z

Matheus valew pela sua resposta, mas o que eu li e não entendi foi o seguinte.

public String makinStrings() {  
String s = ?Fred?;  
s = s + "47";  
s = s.substring(2, 5);  
s = s.toUpperCase();  
return s.toString();  
}

Essa é uma questão do testkiller, a pergunta é, qnts Strings são criadas? No gabarito a resposta fala que são 3, procurando no GUJ, eu achei isto http://www.guj.com.br/posts/list/116447.java, mas ainda não entendi, segundo a explicação do thingol.

String teste = "teste"; //<<<quando eu faço isso eu crio mesmo a String  
  
public String metodo(){  
String teste = "teste"; //<<< quando eu faço isso pego do pool de String
return "";
}

}

Foi isso que eu não entendi, o pq a resposta é que são criadas 3 Strings, a dúvida não era sobre a variável em si.

Vlws

Andre_Fonseca

oi, depende

Java usa uma coisa chamada pool de Strings que é uma porção de memória utilizada para trabalhar exclusivamente com objetos do tipo String..

dá uma olhada no próprio javadoc da classe String e também uma pesquisada no google

no seu código por exemplo poderíamos ter duas situações:

utilizando o pool

public class Brand {

	String teste="teste";
	
	public String metodo() {
		String teste="teste";
		return teste;
	}
	
	public static void main(String[] args) {
		Brand brand = new Brand();
		if (brand.teste.equals(brand.metodo())) {
			System.out.println("conteudo igual?");
		}
		
		if (brand.teste==brand.metodo()) {
			System.out.println("referencia igual?");
		}
	}
}

não utilizando o pool

public class Brand {

	String teste="teste";
	
	public String metodo() {
		String teste=new String("teste");
		return teste;
	}
	
	public static void main(String[] args) {
		Brand brand = new Brand();
		if (brand.teste.equals(brand.metodo())) {
			System.out.println("conteudo igual?");
		}
		
		if (brand.teste==brand.metodo()) {
			System.out.println("referencia igual?");
		}
	}
}
Matheus_Leandro_Ferr

A sim!!

Realmente, explicar por escrita é meio dificil!
mas da uma lida sobre o que o javando falou que pode ajudar um pouco! As vezes a maneira do thingol falar é meio nerd =P

Z

Vlws Matheus e André,

Ficou legal sua explicação André, vou dar uma lida no javadoc sim, vlws pela dica.
Mas eu tinha contado na questão 4 Strings criadas, vixi, to vendo que num vo passa nunk nessa prova :frowning: , hauhuaha,

Flws rapaziada

Criado 30 de janeiro de 2009
Ultima resposta 30 de jan. de 2009
Respostas 5
Participantes 3