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);
        }
    
    }
  • 相关阅读:
    关于sql json数据的处理
    时间函数strtotime的强大
    /usr/bin/install: cannot create regular file `/usr/local/jpeg6/include/jconfig.h'
    linux安装php7.2.7
    关于sql时间方面的处理
    关于centos防火墙的一些问题
    linux 安装ssl 失败原因
    linux安装php7.2.7
    拾取坐标和反查询接口api
    【转】通过点击获取地址等信息、可以传值
  • 原文地址:https://www.cnblogs.com/21556guo/p/14184022.html
Copyright © 2011-2022 走看看