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;
        }
  • 相关阅读:
    Kafka常用操作备忘
    Spark执行流程(转)
    Spark性能优化总结
    Kafka学习笔记
    vue-简单例子初始化
    解析字符串模板函数
    js的apply 和 call区别
    水平垂直居中
    IE8 div旋转 Matrix,模拟轮播前后翻页按钮
    jsp 自定义标签-SimpleTagSupport 使用笔记
  • 原文地址:https://www.cnblogs.com/leifei/p/12290934.html
Copyright © 2011-2022 走看看