toString
используется для печати вывода, например
Без toString
class Student{
int rollno;
String name;
String city;
Student(int rollno, String name, String city){
this.rollno=rollno;
this.name=name;
this.city=city;
}
public static void main(String args[]){
Student s1=new Student(101,"Ram","Bengaluru");
Student s2=new Student(102,"Krishna","Chennai");
System.out.println(s1);
System.out.println(s2);
}
}
Выход:
Student@7852e922
Student@4e25154f
В этом примере s1
и s2
напечатали местоположение, а не значения поля
С toString
class Student{
int rollno;
String name;
String city;
Student(int rollno, String name, String city){
this.rollno=rollno;
this.name=name;
this.city=city;
}
public String toString(){//overriding the toString() method
return rollno+" "+name+" "+city;
}
public static void main(String args[]){
Student s1=new Student(101,"Ram","Bengaluru");
Student s2=new Student(102,"Krishna","Chennai");
System.out.println(s1);
System.out.println(s2);
}
}
Выход:
101 Ram Bengaluru
102 Krishna Chennai
В этом примере он печатал значения полей, как и ожидалось.
Для equals
метода
Без equals
:
class Student{
int rollno;
String name;
String city;
Student(int rollno, String name, String city){
this.rollno=rollno;
this.name=name;
this.city=city;
}
public static void main(String args[]){
Student s1=new Student(101,"Ram","Bengaluru");
Student s2=new Student(101,"Ram","Bengaluru");
System.out.println(s1.equals(s2));
}
}
Выход:
ложь
В этом примере, хотя s1 и s2, т.е.
Student s1=new Student(101,"Ram","Bengaluru");
Student s2=new Student(101,"Ram","Bengaluru");
такие же, но результат s1.equals (s2) равен false.
С equals
class Student {
int rollno;
String name;
String city;
Student(int rollno, String name, String city){
this.rollno=rollno;
this.name=name;
this.city=city;
}
public static void main(String args[]){
Student s1=new Student(101,"Ram","Bengaluru");
Student s2=new Student(101,"Ram","Bengaluru");
System.out.println(s1.equals(s2));
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
Student other = (Student) obj;
if (city == null) {
if (other.city != null)
return false;
} else if (!city.equals(other.city))
return false;
if (name == null) {
if (other.name != null)
return false;
} else if (!name.equals(other.name))
return false;
if (rollno != other.rollno)
return false;
return true;
}
}
Выход:
правда
В этом примере результат s1.equals(s2)
правильный, т. Е. True