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);
        }
    
    }
  • 相关阅读:
    内存泄漏检测工具
    RGB 颜色 代码 转换器
    索引 扫描及查找 1
    IIS7中Integrated和classic的区别
    HTTP请求上下文之终结:HttpContext类
    vs2010 快捷键大全
    IIS 7.0 中的 HTTP 状态代码
    JSON Date Format
    如何使用 MasterPage(注意母板页和子页面的执行顺序)
    B树、B树、B+树、B*树
  • 原文地址:https://www.cnblogs.com/21556guo/p/14184022.html
Copyright © 2011-2022 走看看