• == 和 equals 的区别是什么


    1.== 和 equals 的区别是什么?

    == 对于基本类型来说是值比较,对于引用类型来说是比较的是引用;

    而 equals 默认情况下是引用比较,只是很多类重新了 equals 方法。

    比如 String、Integer 等把它变成了值比较,所以一般情况下 equals 比较的是值是否相等

    2.证明如下

    代码示例:

    String x = "jack";
    String y = "jack";
    String z = new String("jack");
    System.out.println(x==y); // true
    System.out.println(x==z); // false
    System.out.println(x.equals(y)); // true
    System.out.println(x.equals(z)); // true  String类的 equals 方法被重写,它变成了值比较

    未被重写的equels方法:

    public boolean equals(Object obj) {
        return (this == obj); //引用比较
    }

    String重写后的equels方法:

    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) { //anotherString.value.length 相当于 anotherString.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;
        }
  • 相关阅读:
    重构与单元测试
    10个现代的软件过度设计错误
    连接ORACLE数据库,是否必须要安装oracle客户端
    关于区块链
    为什么K8s会成为主流?
    Devops K8s
    关于UDP协议
    OO第四单元总结
    OO第三单元总结--根据JML写代码
    面向对象电梯系列总结
  • 原文地址:https://www.cnblogs.com/leifei/p/12290934.html
Copyright © 2020-2023  润新知