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);
        }
  • 相关阅读:
    学习笔记65—学位和学历区别
    学习笔记64—兴趣阅读之文学
    学习笔记63—兴趣阅读之法律
    学习笔记62—兴趣阅读之管理学
    学习笔记61—兴趣阅读之经济学
    学习笔记60—SPSS
    学习笔记59—收藏这7个在线配色神器,再也不愁配色灵感了
    学习笔记58—3D杯子设计
    网络处理2-异步POST请求和同步请求
    网络处理1-异步GET请求
  • 原文地址:https://www.cnblogs.com/Alpharun/p/8974341.html
Copyright © 2011-2022 走看看