• ==和equals的对比


    ==:

    ==是一个比较运算符,,==对比的是栈中的值,既可以判断基本类型,又可以判断引用类型,基本数据类型是变量值,引用类型是堆中内存对象的地址。
    如果判断基本类型,判断的是值是否相等。示例: int i=10: double d=10.0
    如果判断引用类型,判断的是地址是否相等,即判定是不是同一个对象

    equals:

    equals: 是Object类中的方法,Object类中默认也是采用==比较,通常会重写只能判断引用类型,默认判断的是地址是否相等,子类中往往重写该方法,用于判断内容是否相等。比如看看 Integer 和String 类的equals 源代码。
    1)Object 类的 equals 源代码:
    // Object equals 方法默认就是比较对象地址是否相同
    // 也就是判断两个对象是不是同一个对象 .
      public boolean equals(Object obj) {
            return ( this == obj);
        }
    2)String 类的 equals 源代码:
        public boolean equals(Object anObject) {
            if ( this == anObject) {
                return true;
            }
            return ( anObject instanceof String aString)
                    && (! COMPACT_STRINGS || this. coder == aString. coder)
                    && StringLatin1. equals( value, aString. value);
        }
    3)Integer 类的 equals 源代码:
    // 从源码可以看到 Integer 也重写了 Object equals 方法 ,
    // 变成了判断两个值是否相同
        public boolean equals(Object obj) {
            if ( obj instanceof Integer) {
                return value == ((Integer) obj).intValue();
            }
            return false;
        }
  • 相关阅读:
    vue父子组件传值的方法总结
    000 我和网安的故事.doc
    k8s之client-go和ctrl的各种k8s client
    pytorch代码实现之SAConv卷积
    【数据分析】:什么是数据分析?
    Ubuntu20详细安装步骤
    【Docker】基于Dockerfile构建镜像介绍
    Pycharm中画图警告:MatplotlibDeprecationWarning
    将kali系统放在U盘中&插入电脑直接进入kali系统
    让我们谈谈密码哈希
  • 原文地址:https://blog.csdn.net/weixin_63357306/article/details/133678994