zoukankan      html  css  js  c++  java
  • equals与==的区别

    本质:== 是运算符,equals是方法

    == 对基本数据类型是比较内容值,而引用数据类型是比较引用值。

    看代码

    1 Object类的equals方法

    public boolean equals(Object obj) {
            return (this == obj);
        }

    可见Object下equals的效果就是 == 的效果

    2 大多数类重写了equals方法:

    String重写后的equals

    private final char value[];
    public boolean equals(Object anObject) {
        if (this == anObject) {  //如果引用地址是否一致
            return true;
        }
        if (anObject instanceof String) {   //如果传进来的是String类型
            String anotherString = (String)anObject;  //向下转型
            int n = value.length;
            if (n == anotherString.value.length) {  //如果当前字符串长度和被传入的字符串长度一致
                char v1[] = value;
                char v2[] = anotherString.value;
                int i = 0;
                while (n-- != 0) {  
                    if (v1[i] != v2[i])  //如果两者转化成的字符数组中某个索引位置的值不一样
                        return false;
                    i++;
                }
                return true;
            }
        }
        return false;
    }

    自己写的User类重写equals

    public class User implements Serializable {
        private String name;
        private int age;
        //set,get方法
    
        @Override
        public boolean equals(Object o) {
            if (this == o) return true;  //如果引用地址一样
            if (o == null || getClass() != o.getClass()) return false;  //如果传入的o是null或者传入的o不是User类型
    
            User user = (User) o;  
    
            if (age != user.age) return false;  //一个个属性分别比较是否一致
            return name.equals(user.name);
        }
    
    }
  • 相关阅读:
    idea 插件之 SequenceDiagram
    idea 中添加mybatis的mapper文件模板
    springBoot 中 logback配置文件详解
    Mysql show processlist、show profiles 排查问题
    input 输入框效验
    Java基础之comparator和comparable的区别以及使用
    mysql sql使用记录
    mysql 优化之索引的使用
    IDEA 中常用快捷键的使用
    form表单中method的get和post区别
  • 原文地址:https://www.cnblogs.com/21556guo/p/14184022.html
Copyright © 2011-2022 走看看