例:
public class Student {//实例变量
private String name;
private int age;
//添加构造方法
public Student(String name, int age) {this.name = name;
this.age = age;
}
public String getName() {return name;
}
public void setName(String name) {this.name = name;
}
public int getAge() {return age;
}
public void setAge(int age) {this.age = age;
}
//重写toString方法
@Override
public String toString() {return "Student{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
//重写equals()方法
@Override
public boolean equals(Object obj){//1. 比较两个引用是否指向同一个对象。
if(this==obj){return true;
}
//2. 判断obj是否为null。
if(obj==null){return false;
}
//3. 判断两个引用指向的实际对象类型是否一致。
if(obj instanceof Student){//4. 强制类型转换。
Student s=(Student)obj;
//5. 依次比较各个属性值是否相同。
if(this.name.equals(s.getName())&&this.age==s.getAge()){return true;
}
}
return false;
}
}
//测试
public class TestStudent {public static void main(String[] args) { Student s1=new Student("xxx",20);
Student s2=new Student("www",22);
//getClass方法:判断s1和s2是不是同一个类型
Class class1=s1.getClass();
Class class2=s2.getClass();
if (class1==class2){System.out.println("s1和s2是同一个类型");
}
else{System.out.println("s1和s2不是同一个类型");
}
//hashCode方法
System.out.println(s1.hashCode()); //返回1784662007
System.out.println(s2.hashCode()); //返回997110508
Student s3=s1;
System.out.println(s3.hashCode()); //返回1784662007,与s1相同
//在栈里面有两个变量s1和s3,这两个变量都指向堆里的同一个对象
//toString方法
System.out.println(s1.toString()); //返回Student{name='xxx', age=20}
System.out.println(s2.toString()); //返回Student{name='www', age=22}
//equals方法:判断两个对象是否相等
System.out.println(s1.equals(s2)); //返回false
Student s4=new Student("aaa",17);
Student s5=new Student("aaa",17);
System.out.println(s4.equals(s5)); //没有重写equals()方法之前返回false,重写之后返回true
}
}
本人学习笔记,若有错误或者不足之处,欢迎大家积极交流并给予指正。
你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧