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

点赞
收藏

评论区

加载中...

相关推荐

手写Java HashMap源码

HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22

java中字符串相等判断

字符串的判断有2种:        1、判断地址是否相等 用:        2、判断值是否相等 用:equals方法Object类作为所有类的超类,而Object类的equals方法是直接比较地址的,源码如下:publicbooleanequals(Objectobj){

js之传值与传址/undefined和null/严格模式

传值与传址基本数据类型有五种Undefined、Null、Boolean、Number和String引用数据类型有两种object,array,fn两种数据类型的区别:1.存储位置不同原始数据类型直接存储在栈(stack)中简单数据段,占据空间小,大小固定,属于被频繁使用的数据,所以存储在栈中;引用数据类型直接存

补充关于equals的比较方式

补充(equals比较)Object中的equals比较的是地址languagepublicbooleanequals(Objectobj)return(thisobj);java.lang.String类中equals的方法equals判断相等依据策略:如果与目标相等返回0,小于目标返回值小于0,大于目标返回值大于0lan

Java中只存在值传递

在Java中并不存在引用传递(即地址传递),对于变量(可以是基本数据类型,也可以是引用数据类型)而言,可以理解为就是一个地址。传递,存在着拷贝操作。举个列子:1、在方法参数上,传递的是基本数据类型。定义了一个用于交换两个整型数的方法:publicstaticvoidswap(inta,intb){in

JavaScript的深拷贝和浅拷贝

一、数据类型数据分为基本数据类型(String,Number,Boolean,Null,Undefined,Symbol)和对象数据类型。、1.基本数据类型的特点:直接存储在栈(stack)中的数据2.引用数据类型的特点:存储的是该对象在栈中引用,真实的数据放在堆内存里。引用数据类型在栈中存储了指针,该指针指向堆中该实