zoukankan      html  css  js  c++  java
  • "=="和equals小结

    通俗点讲,==是看看左右是不是一个东西。equals是看看左右是不是长得一样。
    如何记住嘛。如果单纯是想记住, 
    ==:等于。
    equals:相同。
    两个长得一样的人,只能说长的相同(equals),但是不等于他们俩是一个人。只要记住equals,==就不用记了。
    =====================================================================================
    术语来讲的区别:
    1.==是判断两个变量或实例是不是指向同一个内存空间
    equals是判断两个变量或实例所指向的内存空间的值是不是相同
    2.==是指对内存地址进行比较
    equals()是对字符串的内容进行比较
    3.==指引用是否相同
    equals()指的是值是否相同
    ====================================================================================
    举个栗子  (栗子:又举我?!WTF)
    public static void main(String[] args) {
        
        String a = new String("aaa");
        
        String b = new String("aaa");
        
        int c = 10;
        
        int d = 10;
        
        System.out.println(a.equals(b)); // true  内容相同
        
        System.out.println(a == b); // false 引用地址不一样
    
        System.out.println(c == d); // true 变量值一样
    }

    2018年1月1日补充:

    以上说的equals仅限于String类型比较,因为String已经重写了equals方法,如果其他自定义的引用类型还是用equals来比较(不重写equals方法),还是会默认调用Object类中的equals方法,比较的还是两个引用的内存地址,故:equals方法的使用需要我们根据业务需求来决定是否重写

    以下为String类中重写的equals方法:

        public boolean equals(Object anObject) {
            if (this == anObject) {
                return true;
            }
            if (anObject instanceof 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;
        }
    欢迎补充
    java交流群:4060038



  • 相关阅读:
    python自动更新chromedriver与chrome兼容
    Python生成exe可执行文件
    windows下安装python 且 安装pip
    python运行的时候报错line 192, in _run_module_as_main return _run_code(code, main_globals, None 解决方案
    log4j2配置文件log4j2.xml
    log4j配置文件中的additivity属性
    Druid作连接池的数据库的主从动态切换
    Win10进入安全模式的方法
    Win10复制文件或是从网站另存图片提示“客户端没有所需的特权”怎么解决?
    druid添加log4j2
  • 原文地址:https://www.cnblogs.com/zhangjianbing/p/8082604.html
Copyright © 2011-2022 走看看