zoukankan      html  css  js  c++  java
  • java .equals()和==的区别

    (1)比较基本数据类型

    对于8种基本数据类型的变量,变量直接存储的是“值”,因此在用关系操作符==来进行比较时,比较的就是 “值” 本身。

    (2)比较包装类

    public class Main {
        public static void main(String[] args) {
            Integer i1 = new Integer(1);
            Integer i2 = new Integer(1);
            System.out.println(i1 == i2);//false
            System.out.println(i1.equals(i2));//true
        }
    }

    这里"=="比较的是变量指向的内存地址,new产生的两个不同的对象所存放的地址是不一样的,这边的"equals"比较的就是内容,这里为什么比较的是内容,因为Integer重写了equals的方法。附上源码:

        public boolean equals(Object obj) {
            if (obj instanceof Integer) {
                return value == ((Integer) obj).intValue();
            }
            return false;
        }

    (3)比较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;
        }

    (4)比较对象

    public class Main {
        public static void main(String[] args) {
            Test t1 = new Test();
            Test t2 = new Test();
            System.out.println(t1 == t2);//false
            System.out.println(t1.equals(t2));//false
        }
    }

    没有重写equals方法的类都是调用Object的equals方法:

        public boolean equals(Object obj) {
            return (this == obj);
        }
  • 相关阅读:
    MSDN Silverlight翻译Controls
    MSDN Silverlight翻译MSDN Siverlight
    树状数组
    MSDN Silverlight翻译Application and Programming Models
    MSDN Silverlight翻译XAML
    布隆过滤器(Bloom Filter)的原理和实现
    Opening a Modal Dialog shows a horizontal scroll bar
    Jquery 选择器性能问题
    SQL将Excel文件导入数据库
    C# 无法读取Excel中的数据单元格。有数据,但是读出来全是空值。
  • 原文地址:https://www.cnblogs.com/Alpharun/p/8974341.html
Copyright © 2011-2022 走看看