如何理解Java的equals()和 = =?
Posted L烧鱼
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何理解Java的equals()和 = =?相关的知识,希望对你有一定的参考价值。
经过参考网上的资料以及自己的实践,有以下的总结
目录
目录
1、 如果= =两边都是对象,则用来判断两个对象的地址是否相同,即是否是指相同一个对象
1) String str = "lsy" 和 String str=new String ("lsy")
1、 equals用来比较的是两个对象的内容是否相等,无关地址
1) Object的equals()默认比较的是地址,需要重写Object的equals(),但是String重写了
一、 = =
1、 如果= =两边都是对象,则用来判断两个对象的地址是否相同,即是否是指相同一个对象
1) String str = "lsy" 和 String str=new String ("lsy")
先在内存中找是不是有"lsy"这个对象,如果有,就让str指向那个"lsy"。内存里如果没有"lsy",就创建一个新的对象保存"lsy".。
String str = new String ("lsy") 则不管内存里是不是已经有"lsy"这个对象,都新建一个对象保存"lsy",也就是和之前的String str = "lsy"没有关系了。
PS:
String s1 = new String("lsy");
String s2 = "lsy";
String s3 = "lsy";
System.out.println("s1==s3:" + (s1 == s3));
System.out.println("s2==s3:" + (s2 == s3));
2、 如果= =的其中一边有基本类型,则是值的比较
int s1 = 6;
int s2 = 128;
Integer s3 = 6;
Integer s4 = new Integer(128);
System.out.println("s1 == s3 :" + (s1 == s3));
System.out.println("s2 == s4 :" + (s2 == s4));
二、 equals()
1、 equals用来比较的是两个对象的内容是否相等,无关地址
1) Object的equals()默认比较的是地址,需要重写Object的equals(),但是String重写了
String s1 = new String("lsy");
String s3 = "lsy";
System.out.println("s1 == s3 :" + (s1 == s3));
System.out.println("s1.equals(s3) :" + (s1.equals(s3)));
以上是关于如何理解Java的equals()和 = =?的主要内容,如果未能解决你的问题,请参考以下文章
Java中如何判断两个对象是否相等(Java equals and ==)
Java中如何判断两个对象是否相等(Java equals and ==)
Java中如何判断两个对象是否相等(Java equals and ==)