栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

笔记:Java中的“==“与equals

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

笔记:Java中的“==“与equals

"==":

如果是基本数据类型,==判断的是值

如果是对象类型,==判断的是对象的地址

public class Demo01 {
    public static void main(String[] args) {
        // 例一
        String str = "yh";
        String str1 = "yh";
        System.out.println("例一:" + (str == str1));

        // 例二
        String str2 = new String("yh");
        String str3 = new String("yh");
        System.out.println("例二:" + (str2 == str3));

        // 例三
        int i1 = 25;
        int i2 = 25;
        System.out.println("例三:" + (i1 == i2));

        // 例四
        Test t1 = new Test();
        Test t2 = new Test();
        System.out.println("例四:" + (t1 == t2));

    }
}

 D:UsersJavajdk1.8.0_102binjava.exe ...
例一:true
例二:false
例三:true
例四:false

"equals":

public boolean equals(Object o):默认比较内容,重写可以比较内容,快捷键自动生成

package com.yang.Object;

public class Student {
    private String name;
    private int age;

    public Student() {
    }

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


    //重写equals方法
    @Override
    public boolean equals(Object o) {
        
        //比较地址是否相同,如果相同,内容肯定是一样的
        if (this == o) return true;

        //1. 判断参数是否为null,如果是null就没必要比了,返回false
        //2. 判断两个对象是否来自同一个类
        if (o == null || getClass() != o.getClass()) return false;

        //向下转型
        Student student = (Student) o; //student = s2

        //比较年龄是否相同
        if (age != student.age) return false;

        //比较姓名是否相同
        return name != null ? name.equals(student.name) : student.name == null;
    }

}
public class equalsDemo {
    public static void main(String[] args) {
        Student s1 = new Student();
        s1.setName("李华");
        s1.setAge(25);

        Student s2 = new Student();
        s2.setName("李华");
        s2.setAge(25);

        //比较两个对象的内容是否一致
//      System.out.println(s1==s2);  //false,原因:==比较的是地址值,
                                     //new要在堆中开辟新的地址值,
                                     //s1与s2地址值肯定不一样,此处比较的不是内容

//        System.out.println(s1.equals(s2)); //false,原因如下:
        

        //解决方案:要在Student类中重写 equals方法(见Student类),然后调用
        System.out.println(s1.equals(s2)); //true

    }
}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/750656.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号