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



  • 相关阅读:
    C/C++产生随机数
    BNUOJ34973Liserious战队
    oracle ebs 12.20 安装成功其过程失败日记及总结(1)
    HDU 2544 最短路 SPFA 邻接表 模板
    GridView编辑删除操作
    Hibernate_10_继承的例子_单表
    String不变性
    Mac在结构quick cocos2d-x编译环境
    Hash散列算法 Time33算法
    南京地图南京全套的卫星地图下载 百度高清卫星地图包括道路、标签信息叠加
  • 原文地址:https://www.cnblogs.com/zhangjianbing/p/8082604.html
Copyright © 2011-2022 走看看