Como usar o toString? E para que serve? como é chamado ?[Resolvido]

Boa noite

Gostaria de saber como usar o toString?
E para que ele serve? E onde e pode ser usado ? como é chamado ?

quanto vc faz algo assim

System.out.println(obj);//obj é um instancia de algum objeto

seria a mesma coisa que

System.out.println(obj.toString());
1 curtida

O toString() é uma representação em texto do seu objeto… toString() de Object retorna o nome da classe mais uma representação hexadecimal do código de
hash do seu objeto…Para alterar este comportamento caso você queira imprimir algo significativo você pode sobrescrever este método
no seu objeto:

   
   @Override
   public String toString(){
       return "Teste";
   }
  
1 curtida

Vc pode utiliza-lo em qualquer classe, todas as suas classes por default já possui esse método mais vc pode sobrescrever o método da maneira que achar melhor.
Geralmente ele é utilizado para vc definir a string de saida quando forem imprimir seu objeto ou forem converte-lo para String…

Caso vc execute o seguinte código sem sobrescreve-lo

Pessoa p = new Pessoa();
System.out.println(p);

sua saída será:

Pessoa@a90653

caso vc sobrescreva o método dessa maneira por exemplo e execute o teste mostrado acima novamente

public class Pessoa {

	@Override
	public String toString() {
		return "Sobrescrevendo uma nova saída para o método toString()";
	}
}

sua saída será essa

Sobrescrevendo uma nova saída para o método toString()
5 curtidas

[quote=breno500as]O toString() é uma representação em texto do seu objeto… toString() de Object retorna o nome da classe mais uma representação hexadecimal do código de
hash do seu objeto…Para alterar este comportamento caso você queira imprimir algo significativo você pode sobrescrever este método
no seu objeto:

[code]

@Override
public String toString(){
return “Teste”;
}

[/code][/quote]

Mas teria como vc fazer um exemplo pra mim usando o toString?

se tiver ficarei muito agradecido.

[quote=fabio.cbrandao]Vc pode utiliza-lo em qualquer classe, todas as suas classes por default já possui esse método mais vc pode sobrescrever o método da maneira que achar melhor.
Geralmente ele é utilizado para vc definir a string de saida quando forem imprimir seu objeto ou forem converte-lo para String…

Caso vc execute o seguinte código sem sobrescreve-lo

Pessoa p = new Pessoa();
System.out.println(p);

sua saída será:

Pessoa@a90653

caso vc sobrescreva o método dessa maneira por exemplo e execute o teste mostrado acima novamente

public class Pessoa {

	@Override
	public String toString() {
		return "Sobrescrevendo uma nova saída para o método toString()";
	}
}

sua saída será essa

Sobrescrevendo uma nova saída para o método toString()

[/quote]

Nossa achei bem interessante seu exemplo, agora so quero que me explique como que acontece dele sobrescrever?

quero saber como que ele faz isso?

pelo que vi ele substitui o valor

de System.out.println§; por Sobrescrevendo uma nova saída para o método toString()

quero saber apenas como que isso acontece ?

saberia me explicar ?

Opa…
Segue mais um exemplo… Uma classe de cerveja:


package com.example.model;

import java.util.ArrayList;
import java.util.List;

public class BeerExpert {
	
	
	public List<String> getBrands(String color){
		
		List<String> brands = new ArrayList<String>();  
		
		if(color.equals("amber")){
			brands.add("Jack Amber");
			brands.add("Red Moose");
		}else{
			brands.add("Jail Pale Ale");
			brands.add("Gout Stout");
		}
	   return brands;
	}
	
	@Override
	public String toString() {
		return "Cerveja esperta";
	}

}

Imprimindo:

  System.out.println(new BeerExpert());

Saída: Cerveja esperta

Como seu objeto estende de Object e você sobrescreveu o método toString() a versão a ser chamada será
a sua…pois a sobrescrita é em tempo de execução…

Para ficar mais claro você pode tentar fazer está chamada polimorfica:


   Object cerveja = new BeerExpert();
   System.out.println(cerveja.toString());

Você vai ver que será chamada a sua versão de toString()…

[quote=ceceu][quote=fabio.cbrandao]Vc pode utiliza-lo em qualquer classe, todas as suas classes por default já possui esse método mais vc pode sobrescrever o método da maneira que achar melhor.
Geralmente ele é utilizado para vc definir a string de saida quando forem imprimir seu objeto ou forem converte-lo para String…

Caso vc execute o seguinte código sem sobrescreve-lo

Pessoa p = new Pessoa();
System.out.println(p);

sua saída será:

Pessoa@a90653

caso vc sobrescreva o método dessa maneira por exemplo e execute o teste mostrado acima novamente

public class Pessoa {

	@Override
	public String toString() {
		return "Sobrescrevendo uma nova saída para o método toString()";
	}
}

sua saída será essa

Sobrescrevendo uma nova saída para o método toString()

[/quote]

Nossa achei bem interessante seu exemplo, agora so quero que me explique como que acontece dele sobrescrever?

quero saber como que ele faz isso?

pelo que vi ele substitui o valor

de System.out.println§; por Sobrescrevendo uma nova saída para o método toString()

quero saber apenas como que isso acontece ?

saberia me explicar ?
[/quote]

Como o Breno já comentou o fato de seu objeto ou todos objetos estenderem a classe Object eles executam a implementação do toString() default implementado na classe object ai quando vc da um @Override em algum método que já possui na classe Object vc o sobrescreve executando o seu método sobrescrito ao invés do método default da classe Object…

para entender um pouco melhor como funciona sobrescrição ou sobreposição de métodos leia um pouco mais sobre Herança em Java…

ceceu pelo teor das suas perguntas de uma analisada antes heim , http://www.caelum.com.br/apostilas/
Bom Estudo .