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

Java基础(== 和 equals()的区别)

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

Java基础(== 和 equals()的区别)

很多人会忽略判断==和判断equals()的区别,也有不少人认为==和equals判断方法就是一致的,那不妨试想一下,两种一致的判断类型,怎么会有两种不同的写法呢。有一种很多人都知道的区别,==能用来判断int类型的数据,但判断string类型的数据会报错,因此equals方法的判断便是用来解决这个问题的。下面总结了两个==和equals()的区别:①==是运算符,equals()是方法 ②==判断引用数据类型是比较内存地址,equals()也是比较内存地址,但是重写equals()则比较内容,比如String类的equals()

下面上代码:

public class Demo01{
    public static void main(String[] args){
        String str1 = new String("abc");
        String str2 = new String("abc");
        String str3 = "abc";
        String str4 = "abc";

        System.out.println(str1 == str2);//false
        System.out.println(str3 == str2);//false
        System.out.println(str3 == str4);//true

        System.out.println(str1.equals(str2));//true
        System.out.println(str2.equals(str3));//true
        System.out.println(str3.equals(str4));//true
    }
}
public class Demo02{
    public static void main(String[] args){
        Object obj = new Object();
    }
}

关于equals()方法的重写:

public class Demo05 {
    public static void main(String[] args) {
        User user1 = new User("张三",18);
        User user2 = new User("张三",18);

        System.out.println(user1==user2);
        System.out.println(user1.equals(user2));
    }
}
public class User {
    private String name;
    private  int age;

    public User(){

    }

    public User(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public int getAge() {
        return age;
    }

    public void setName(String name) {
        this.name = name;
    }

    public void setAge(int age) {
        this.age = age;
    }

    @Override
    public String toString() {
        return "User{" +
                "name='" + name + ''' +
                ", age=" + age +
                '}';
    }
}

此时运行程序,返回的结果是两个false,但是在对象类重写了代码equals方法,结果便是false/true

@Override
    public boolean equals(Object obj) {
        //比较内存地址
        if (this == obj){
            return true;
        }
        //判断数据类型是否为User
        if (obj instanceof User){
            User user =(User)obj;
            //比较内容 name/age属性
            if (!this.getName().equals(user.getName())) {
                return false;
            }
            if(this.getAge()!=user.getAge()){
                return false;
            }
            //比较...属性
            return true;
        }
        return false;
    }

String类的equals()方法底层代码:

 

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

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

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