zoukankan      html  css  js  c++  java
  • Java中==和equals的区别

    "=="可以比较基本数据类型,也可以比较引用数据类型。如果比较基本数据类型比较的是变量中存储的值;如果比较引用类型比较的是变量中存储的地址引用。

    equals()是Object类中继承过来的方法,每个引用类型都可以调用,默认继承的equals()方法的比较与"=="一致。如下代码所示:

     public boolean equals(Object obj) {
            return (this == obj);
        }

    如果想要改变比较规则,可以重写equals()方法,如Integer类、String类就是重写了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;
        }

    补充:考察Integer类加载的时候,自己有一个静态的空间,空间内立即加载Integer类型的数组,内存储256个Integer对象(-128~127)。如果我们用的对象在这个之内(如Integer a = 10),直接取静态区中找对应的对象;如果我们用的对象超出了这个范围(如Integer b = 1000),就会帮我们创建一个新的Integer。

    例如: a = 10;   b = 10;   a == b为true

               a = 1000;  b = 1000;   a == b为false

  • 相关阅读:
    js原型杂谈
    arguments.callee.caller
    $resource
    sql的四种匹配模式
    AMD规范
    module.ngdoc
    angularjs杂谈
    浏览器前缀
    css21规范学习
    <meta>标签
  • 原文地址:https://www.cnblogs.com/huangcc/p/11380327.html
Copyright © 2011-2022 走看看