equals方法的改写
@Override//重写equals方法,重写方法后对比的属性值(没有重写前对比的是属性值)
public boolean equals(Object obj) {
Students s = (Students) obj;
return this.name.equals(s.name) && this.age == s.age;
}
public class Demo12_getClass {
public static void main(String[] agrs) {
Students s = new Students("张三", 23);
Students s1 = new Students("张三", 23);
System.out.println(s.equals(s1));
}
}
重写前运行结果
重写后运行结果
==和equals方法的区别
共同点:都可以做比较,返回值都是boolean
区别:
- 1、==号是比较运算符,既可以比较基本数据类型,也可以比较引用数据类型,基础数据类型比较的是值,引用数据类型比较的是地址值
- 2、equals方法只能比较引用数据类型,方法没改写之前比较的是地址值,底层依赖的是==号,但是比较地址值是没有意义的,我们需要重写equals方法,让方法比较对象中的属性值
hashCode() 方法用于返回字符串的哈希码
public class Demo12_HashCode {
public static void main(String[]agrs){
Object obj1 =new Object();
int hashCode1 = obj1.hashCode();
System.out.println(hashCode1);
Object obj2 =new Object();
int hashCode2 = obj2.hashCode();
System.out.println(hashCode2);
}
}
运行结果
Object getClass() 方法用于获取对象的运行时对象的类
package com.Demo12;
public class Demo12_getClass {
public static void main(String[] agrs) {
Students s = new Students("张三", 23);
Class clazz = s.getClass();//获取对象的运行时对象的类
System.out.println(clazz);
}
}
运行结果
getName
package com.Demo12;
public class Demo12_getClass {
public static void main(String[] agrs) {
Students s = new Students("张三", 23);
Class clazz = s.getClass();//获取对象的运行时对象的类
String name = clazz.getName();//获取名称
System.out.println(name);
}
}
运行结果