zoukankan      html  css  js  c++  java
  • == 和 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;
        }
  • 相关阅读:
    .Net常用的命名空间
    Jquery测试纠错笔记
    第一章 学习总结
    Java和C++引用的区别
    gin的墙内开发艺术
    golang几个环境变量的问题
    Leetcode240_搜索二维矩阵II
    Leetcode1358_包含所有三种字符的子字符串数目
    Leetcode1354_多次求和构造目标数组
    Leetcode1353_最多可以参加的会议数目
  • 原文地址:https://www.cnblogs.com/leifei/p/12290934.html
Copyright © 2011-2022 走看看