好久没有更新了,最近在易途学习java,把写课堂上的东西温习下
toString():制定一个对象的打印显示的内容
当我们想打印一个引用数据类型的对象的时候
如果不覆盖toString方法 会打印:类型@XXX
当我们想打印一个引用数据类型的对象的时候
如果不覆盖toString方法 会打印:类型@XXX
为了打印对象能够得到一条有用的信息
都会选择覆盖toString方法
都会选择覆盖toString方法
@Override
public String toString(){
return 拼装信息;
}
public String toString(){
return 拼装信息;
}
equals():制定一个类型的比较规则
当我们的需求想要将内存里面不同的两个对象
按照某种需求视为相等对象的时候[逻辑相等]
需要覆盖equals方法
如果没有覆盖的话 两个对象将比较地址 this == obj
当我们的需求想要将内存里面不同的两个对象
按照某种需求视为相等对象的时候[逻辑相等]
需要覆盖equals方法
如果没有覆盖的话 两个对象将比较地址 this == obj
@Override
public boolean equals(Object obj){
//制定比较规则
}
public boolean equals(Object obj){
//制定比较规则
}
面试题:
==和equals之间的区别?
==:判断左右两边的值是否相等
如果是基本数据类型 比较数值是否相等
如果是引用数据类型 比较地址是否相等
==和equals之间的区别?
==:判断左右两边的值是否相等
如果是基本数据类型 比较数值是否相等
如果是引用数据类型 比较地址是否相等
equals:制定一个类型的比较规则
程序员可以按照自己的意愿 将内存里面
不同的两个对象视为相等对象
比如:Sun公司通过覆盖String类里面的equals
方法将两个字符串只要内容一样就视为相等对象
程序员可以按照自己的意愿 将内存里面
不同的两个对象视为相等对象
比如:Sun公司通过覆盖String类里面的equals
方法将两个字符串只要内容一样就视为相等对象
public class Exec5{
public static void main(String[] args){
Teacher tea1 = new Teacher("Tom",22,'男',4500.0);
Teacher tea2 = new Teacher("Tom",22,'男',4500.0);
System.out.println(tea1.equals(tea2));
System.out.println(tea1);
}
}
class Teacher{
String name;
int age;
char gender;
double salary;
//创建对象的时候 直接对所有属性赋值
public Teacher(String name,int age,char gender,double salary){
this.name = name;
this.age = age;
this.gender = gender;
this.salary = salary;
}
//打印老师对象的时候 直接显示:
//XXX男/女老师 今年XXX岁 薪资是***
@Override
public String toString(){
return name + gender + "老师 今年" + age + "岁 工资是***";
}
//只要两个老师的所有属性都一样 那么就视为相等对象
@Override
public boolean equals(Object obj){
return this.name.equals(((Teacher)obj).name) &&
this.age == ((Teacher)obj).age &&
this.gender == ((Teacher)obj).gender &&
this.salary == ((Teacher)obj).salary;
}
}