A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© sl123 中级黑马   /  2015-8-19 21:55  /  1181 人查看  /  21 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

学生类
class Student {
        private String name;
        private int age;
        private String sex;

        public Student() {
                super();
        }

        public Student(String name, int age, String sex) {
                super();
                this.name = name;
                this.age = age;
                this.sex = sex;
        }

        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;
        }

        public String getSex() {
                return sex;
        }

        public void setSex(String sex) {
                this.sex = sex;
        }

        public void show(){
                System.out.println(name+age+sex);
        }

        @Override
        public String toString() {
                return "Student [name=" + name + ", age=" + age + ", sex=" + sex + "]";
        }

        @Override
        public boolean equals(Object obj) {
                if (this == obj)
                        return true;
                if (obj == null)
                        return false;
                if (getClass() != obj.getClass())
                        return false;
                Student other = (Student) obj;
                if (age != other.age)
                        return false;
                if (name == null) {
                        if (other.name != null)
                                return false;
                } else if (!name.equals(other.name))
                        return false;
                if (sex == null) {
                        if (other.sex != null)
                                return false;
                } else if (!sex.equals(other.sex))
                        return false;
                return true;
        }
       
}
测试类
public class StudentTest {

        /**
         * @param args
         */
        public static void main(String[] args) {
                Student s1 = new Student("s2",11, "男");
               
                Student s2 = new Student("s2",11,"男");
               
                System.out.println(s1.equals(s2));
        }

}

学生类的equals方法谁懂啊,?希望大牛们给详细说明一下,还有s1.equals(s2)这个方法是如何调用的呢?怎么解释啊


21 个回复

倒序浏览
这个,你是想问什么,重写的equals怎么理解还是怎么调用的?
回复 使用道具 举报
同求 今天刚学  感觉也有点蒙
回复 使用道具 举报
q985274961 来自手机 中级黑马 2015-8-19 22:31:36
板凳
这个方法到现在我还没弄明白
回复 使用道具 举报
equals默认比较的是地址值,这里重写比较的是内容.相当于 public boolean equals(Object obj){                 //提高效率                 if(this==obj){                         return true;                 }                 //增强健壮性                 if(!(obj instanceof Student)){                         return false;                 }                 //比较学生姓名和年龄是否相等                 Student s =(Student)obj;                 return this.getName().equals(s.getName()) && this.getAge()==s.getAge();         }
回复 使用道具 举报
student.name.equals();
student.name是否是一个对象?
回复 使用道具 举报
mmppp 中级黑马 2015-8-20 17:34:00
7#
Student.name是一个String类型的对象,所以可以调用Stirng类型的方法嘛.这就是链式编程而已.
String name = Student.name;
name.equals();就是这个意思.
回复 使用道具 举报
史柯 中级黑马 2015-8-20 19:51:49
8#
同学!shift+alt+s+h
自动生成equals方法
回复 使用道具 举报
sl123 中级黑马 2015-8-20 21:51:34
9#
秋天中の夏季 发表于 2015-8-19 22:03
这个,你是想问什么,重写的equals怎么理解还是怎么调用的?

这两个都不是很理解,理解和调用都不太懂
回复 使用道具 举报
sl123 中级黑马 2015-8-20 21:54:02
10#
平爷 发表于 2015-8-19 22:25
同求 今天刚学  感觉也有点蒙

是呀,老师讲的没听太明白
回复 使用道具 举报
sl123 中级黑马 2015-8-20 21:55:34
11#
q985274961 发表于 2015-8-19 22:31
这个方法到现在我还没弄明白

求明白的大神给我们讲讲啊
回复 使用道具 举报
sl123 中级黑马 2015-8-20 21:57:04
12#
burningzzy 发表于 2015-8-19 22:58
equals默认比较的是地址值,这里重写比较的是内容.相当于 public boolean equals(Object obj){                 //提高效率 ...

受益了,谢谢
回复 使用道具 举报
本帖最后由 Marx_D 于 2015-8-20 22:00 编辑
burningzzy 发表于 2015-8-19 22:58
equals默认比较的是地址值,这里重写比较的是内容.相当于 public boolean equals(Object obj){                 //提高效率 ...

既然是比较内容,假如所属类不同时,但是内容相同,那么if(!(obj intance of Student))也输出false那?
回复 使用道具 举报
sl123 中级黑马 2015-8-20 22:04:00
14#
xp2015 发表于 2015-8-19 23:00
student.name.equals();
student.name是否是一个对象?

应该是吧,可以想象成一个对象
回复 使用道具 举报
sl123 中级黑马 2015-8-21 21:14:27
15#
mmppp 发表于 2015-8-20 17:34
Student.name是一个String类型的对象,所以可以调用Stirng类型的方法嘛.这就是链式编程而已.
String name =  ...

嗯,叫链式编程
回复 使用道具 举报
sl123 中级黑马 2015-8-21 21:16:28
16#
史柯 发表于 2015-8-20 19:51
同学!shift+alt+s+h
自动生成equals方法

这个还真没试过
回复 使用道具 举报
sl123 发表于 2015-8-21 21:16
这个还真没试过

equals方法和hashCode方法是HashSet和HashTree依赖的方法
在你看的视频讲到集合的时候,老师才会跟你们讲这个快捷键的
回复 使用道具 举报
sl123 中级黑马 2015-8-21 21:41:38
18#
史柯 发表于 2015-8-21 21:20
equals方法和hashCode方法是HashSet和HashTree依赖的方法
在你看的视频讲到集合的时候,老师才会跟你们讲 ...

哦,好吧,每天都讲很多新知识,记不住啊
回复 使用道具 举报
你这个方法直接就是eclipse中生成的
回复 使用道具 举报
原本new出来的东西打印出来是地址值的,这个没法比较,,,而重写equals方法,比较的就是s1,s2里面的内容了
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 加入黑马