• == 和 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;
        }
  • 相关阅读:
    C# MVC解决跨站请求伪造(appscan)
    .net中关于Url传参问题
    二月项目完成小结
    sql 获取时间
    ajax提交form表单
    C# 视图遍历List数组
    C#遍历指定文件夹中的所有文件
    C#关于文件的操作
    .net 文件上传到服务器【转】
    Server.MapPath获取各级目录【转】
  • 原文地址:https://www.cnblogs.com/leifei/p/12290934.html
Copyright © 2020-2023  润新知