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);
        }
    
    }
  • 相关阅读:
    log4j/log4e的使用
    数据库主键不应该具有任何业务意义
    孔雀森林,何时开屏
    spring + hibernate
    JAVA的运行时类型识别(RTTI)
    开年感想,2005年总结
    iphone真机(越狱)通讯录导入进模拟器
    xcode中工程引用设置
    UIButton setImage 图片大小选择
    加密技术资源
  • 原文地址:https://www.cnblogs.com/21556guo/p/14184022.html
Copyright © 2011-2022 走看看