- equals、hashCode 快捷方式仅一次有效,后面要自己手敲
- 小转大 自动转换,大转小 强制转换
(要转换的类型)转换
1、equals
Object中的 判断相等方法
判断
2、hashcode
哈希码值
3、案例
package com.zking.qiao;
/**
* equals : Object中的 判断相等方法
* @author Administrator
*
*注意:
*1.方法名不能相同
*2.equals、hashCode 快捷方式仅一次有效,后面要自己手敲
*3.小转大 自动转换,大转小 强制转换
*/
public class Student {
private int sid;
private String name;
private String sex;
//构造有参
public Student(int sid, String name, String sex) {
super();
this.sid = sid;
this.name = name;
this.sex = sex;
}
//封装
public int getSid() {
return sid;
}
public void setSid(int sid) {
this.sid = sid;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
//重写equals
//只要学号相同,就返回 true
public boolean equals(Object obj) {
//参数大转小: Object 强转为 Student
Student stu = (Student)obj;
if(this.getSid()==stu.getSid()) {
return true;
}else{
return false;
}
}
//重载 equals 无需强转
//学号,姓名,性别都相同,才返回true
public boolean equals(Student s) {
if(s.getSid()==sid && s.getName().equals(name) && s.getSex().equals(sex)) {
return true;
}else {
return false;
}
}
//重写 hashCode 返回学号+100
public int hashCode() {
return sid+100;
}
//返回 学号+姓名的哈希码+性别的哈希码
public int hashCode1() {
return sid+name.hashCode()+sex.hashCode();
}
//toString
@Override
public String toString() {
return "Student [sid=" + sid + ", name=" + name + ", sex=" + sex + "]";
}
}
package com.zking.qiao;
/**
* 知识点:
* 1、封装:private
* 2、继承:extends
* 3、多态:一个对象多种心态,父类可以代表子类
* 4、重写:继承关系下,子类与父类中的方法名相同,返回值类型相同,参数列表相同
* 重载:同类中,方法名相同,返回值类型不同,参数列表可同可不同
* @author Administrator
*
*/
public class Test {
public static void main(String[] args) {
//创建 学生对象
Student s = new Student(1,"了了","女");
Student ss = new Student(1,"好好","男");
Student s1 = new Student(1,"了了","女");
//equals 相等比较
boolean b = s.equals(ss);
System.out.println(b);
boolean f = s.equals(s1);
System.out.println(f);
//hashCode 哈希码值
System.out.println(s.hashCode());
System.out.println(ss.hashCode1());
}
}