==和equals的区别

Posted a-pp-z-droplet

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了==和equals的区别相关的知识,希望对你有一定的参考价值。

  • ==的作用:

比较两个对象,当这两个比较对象是基本数据类型时,若两个比较对象值相等/不相等,就返回true/false。当这两个比较对象是引用类型时,就比较两个对象的堆内存地址,若相等/不相等,就返回true/false。

实例代码:

public class Temp {

public static void main(String[] args) {
// TODO Auto-generated method stub
Integer int1 = 127;
int int2 = 127;
Integer int3 = 128;
Integer int4 = 128;
String str1 = "MyString";
String str2 = "MyString";
String str3 = new String(str1);

System.out.println("int1==int2 "+(int1 == int2) + " int3==int4 "+(int3==int4));
System.out.println("str1==str2 "+(str1==str2)+" str1==str3 "+(str1==str3));
System.out.println("str1 equals str3 "+str1.equals(str3));
}

 



int1==int2 true int3==int4 false
str1==str2 true str1==str3 false
str1 equals str3 true

 

}

 

 

常量池存储着[-128,127]范围内的整数和使用String str = "StringContent"创建出来的字符串。因此

 

 

  • 1)equals()的作用:

在该方法内,首先用==判断,然后用其他属性判断。

Object类里的equals方法:

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

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;
    }

由于所有类都直接或者间接继承了Object类,所以如果自定类没有重写equals方法,那equals就和==的效果一样。

以上是关于==和equals的区别的主要内容,如果未能解决你的问题,请参考以下文章

Java之equals和==区别

java equals 和 == 区别

== 和 equal 区别

== 和 Equals() 之间的 C# 区别

equals和==的区别

Java ==和equals有什么区别?