码迷,mamicode.com
首页 > 其他好文 > 详细

==和equals的区别

时间:2020-05-01 23:58:04      阅读:99      评论:0      收藏:0      [点我收藏+]

标签:-128   对象   nbsp   bsp   常量   间接   sys   引用类型   属性   

  • ==的作用:

比较两个对象,当这两个比较对象是基本数据类型时,若两个比较对象值相等/不相等,就返回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的区别

标签:-128   对象   nbsp   bsp   常量   间接   sys   引用类型   属性   

原文地址:https://www.cnblogs.com/A-PP-Z-droplet/p/12815203.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!