常见对象_Object类的equals()方法

来源:互联网 发布:知乎 邮箱 查看 编辑:程序博客网 时间:2024/06/09 15:56
package cn.itcast_03;public class Student {private String name;private int age;public Student() {super();}public Student(String name, int age) {super();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;}@Overridepublic boolean equals(Object obj) {// return true;//这里要改进,根据这里比较的成员变量来决定返回true还是false//这里其实要比较的就是name和age//但是,name是String类型的,而String是引用类型的,所以在这里不能直接用==比较,应该用equals()比较//String的equals()方法是重写自Object类的,比较的是字符串的内容是否相同。//this--s1//obj--s2//我们要使用的是学生类的特有成员变量,所以要向下转型Student s = (Student)obj;//s -- obj -- s2if(this.name.equals(s.name) && this.age == s.age){return true;}else{return false;}}}



package cn.itcast_03;/* * public boolean equals(Object obj):指示其他某个对象是否与此对象“相等”。  * 这个方法,默认情况下比较的是地址值。比较地址值一般来说意义不大,所以我们要重写该方法。 * 怎么重写呢? * 一般都是用来比较对象的成员变量值是否相同。 *  * 看源码: * public boolean equals(Object obj) { *//this - s1 *//obj - s2 *return (this == obj); *  } *  * ==: * 基本类型:比较的就是值是否相同 * 引用类型:比较的就是地址值是否相同 */public class StudentDemo {public static void main(String[] args) {Student s1 = new Student("王亮", 22);Student s2 = new Student("王亮", 22);System.out.println(s1 == s2);// falseStudent s3 = s1;System.out.println(s1 == s3);// trueSystem.out.println("-------------------");System.out.println(s1.equals(s2));// obj = s2 //trueSystem.out.println(s1.equals(s1));//trueSystem.out.println(s1.equals(s3));//trueStudent s4 = new Student("风清杨",30);System.out.println(s1.equals(s4));//false}}


0 0
原创粉丝点击