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

  • 相关阅读:
    iOS 中Block以及Blocks的使用,闭包方法调用
    iOS 网络监听、判断
    微信摇一摇实现原理,视图展示
    iOS cocos2d安装以及问题解决
    iOS cocos2d游戏引擎的了解之一
    Leetcode-Valid Sudoku
    Leetcode-Count and Say
    Leetcode-Length of Last Word
    Leetcode-Merge Two Sorted Lists
    Leetcode-Add Binary
  • 原文地址:https://www.cnblogs.com/huangcc/p/11380327.html
Copyright © 2011-2022 走看看