Java >> Tutoriel Java >  >> Tag >> String

Méthode ToString en Java

Lorsque nous créons un objet de n'importe quelle classe définie par l'utilisateur et que nous imprimons l'objet, nous obtenons l'adresse Hexacode de cet objet. Voir ci-dessous ,

    Book B = new Book ("Include Help");
    System.out.println(B);

Sortie

@2a139a55

Ici, lorsque nous imprimerons l'objet B de la classe Book nous obtiendrons l'hexacode de l'Objet plutôt que la valeur de l'Objet.

Mais, lorsque nous faisons la même chose avec des classes Java prédéfinies telles que String. Il n'imprimera pas l'adresse mais la valeur de cet objet.

    String  S= new String ("Include Help");
    System.out.println(S);

Sortie

Include Help

Alors, comment ça se passe dans le cas d'une classe définie par l'utilisateur ? N'est-il pas intéressant de voir ce qui se passe en arrière-plan ?

En effet, Java Compiler recherche la méthode toString() dans chaque classe qui convertit l'objet en chaîne. Dans le cas de cette méthode, elle n'est pas trouvée dans la classe, elle imprimera l'adresse HexaCode de l'objet. Mais dans les classes Java prédéfinies comme String, la méthode toString est prédéfinie.

Si nous voulons la même fonctionnalité dans les classes définies par l'utilisateur, nous devons déclarer explicitement la méthode toString dans notre classe, ce que nous avons fait dans notre exemple.

Voyons cela à l'aide d'un exemple,

Classe sans définir la méthode toString dans notre classe

package logicProgramming;
//class representing a Book 
class Book
{
	private String Name;
	private String Code;
	private String Author;
	public Book(String Name,String Code,String Author)
	{
		this.Name=Name;
		this.Code=Code;
		this.Author=Author;
	}
	
}
public class ExImportant {

	public static void main(String[] args) {
	Book B=new Book("Let Us C","HT301","Harsh Tomar");	
	
	// If We Use System.out.println(B) It Will Print 
	// The HexaCode Address  of Object B
	// But If We Want to Print the Value Of Object 
	// We have To use toString Method In Our User Defined Class	
	// Let Us UnderStand.........
	System.out.println(B);
	
	// See The Output It Will Print Address Of B	
	
	}
}

Sortie

logicProgramming.Book@2a139a55

Remarque : programmation logique est le nom du package et Book est le nom de la classe

Modifions maintenant ce code pour obtenir la valeur de l'objet afin de faire cela, nous devons définir une méthode toString() dans notre classe

package logicProgramming;
//class representing the book
class Book
{
	private String Name;
	private String Code;
	private String Author;
	public Book2(String Name,String Code,String Author)
	{
		this.Name=Name;
		this.Code=Code;
		this.Author=Author;
	}
	
	// toString method 
	public String toString()
	{return ("Name :"+this.Name+"\nCode :"+this.Code+"\nAuthor :"+this.Author);}  
}
public class ExImportant2 {

	public static void main(String[] args) {
	Book B=new Book("Let Us C","HT301","Harsh Tomar");	
	// If We Use System.out.println(B) 
	// It Will Print The HexaCode Address  of Object B
	// But If We Want to Print the Value Of Object 
	// We have To use toString Method In Our User Defined Class	
	// Let Us UnderStand.........
	System.out.println(B);
	
	// See The Output It Will Print The Information Of Obeject B	
	
	}

}

Sortie

Name :Let Us C
Code :HT301
Author :Harsh Tomar

Balise Java