java中==与 String中 equals 和对象中equals比较
来源:互联网 发布:mysql linux启动 编辑:程序博客网 时间:2024/05/16 14:33
初学java可能老师都讲过==与 String 中equals的比较
public class DemoTest {public static void main(String[] args) {String str1="123";String str2="123";System.out.println("str1==str2 ? "+(str1==str2));String str3=new String("123");String str4=new String("123");System.out.println("str3==str4 ? "+(str3==str4));System.out.println("str3==str4 ? "+str3.equals(str4));}}
结果:
因此很多人认为:== 比较的是地址 equals 比较的是内容 这其实是一种误解!
看如下代码:
class Person{String id;public Person(String id){this.id=id;}}public class DemoTest {public static void main(String[] args) {Person p1=new Person("123");Person p2=new Person("123");System.out.println("p1==p2 ? "+(p1==p2));System.out.println("p1==p2 ? "+p1.equals(p2));}}结果:
假如==比较的是地址,equals比较的是内容为什么上面的代码p1.equals(p2),会等于false呢?
其实在java中:
默认情况下Object中equals与==都是比较的地址,但是String类中的equals覆写Object中的equals,所以在String中,equals比较的是内容,但是在自定义类中却没有覆写Object中的equals。因此比较的是地址。所以如果比较自定义类中的对象是否相同,也需要覆写Object中的equals方法来重新定义equals
代码如下:
class Person{String id;public Person(String id){this.id=id;}/**覆写equals方法*/public boolean equals(Person a){ //1.首先盘段两个对象需要比较的Object是否为null,如果是返回false if(a==null){ return false; } //2.判断测试的是否为同一个对象,如果是返回true if(this == a){ return true; } //3.判断他们的类型是否相等,如果不相等,返回false if(this.getClass() != a.getClass()){ return false; } //4.判断值是否相等 //此处equals因为比较的是字符串,所以比较的是内容 return id.equals(a.id); }}public class DemoTest {public static void main(String[] args) {Person p1=new Person("123");Person p2=new Person("123");System.out.println("p1==p2 ? "+(p1==p2));System.out.println("p1==p2 ? "+p1.equals(p2));}}
结果:
0 0
- java中==与 String中 equals 和对象中equals比较
- Java中对象的比较 == 和 equals()
- Java中对象的比较 == 和 equals()
- Java 中String对象比较方法equals和等号==
- Java中“==”与“equals”比较
- JAVA中equals()和==比较
- java 中String类的内存和equals与“=="的比较
- java String对象中‘==’,equals与compareTo函数的使用和区别
- 对象比较中equals与==的区别
- Java Object类中equals()方法与String类中equals()方法的比较
- java中关于String的equals()比较
- Java和C#中String直接赋值与使用new创建(==与equals进行比较)的区别
- java中==,equals()比较
- java 中 ==与equals的比较
- java中equals()方法与“==”的比较
- java中==与equals的比较分析
- java中 == 与.equals()的比较详解
- 【零碎JAVA】java中对象比较,equals与==的区别
- 26 复杂链表的复制
- Service简单学习
- CodeForces 248E Piglet's Birthday (概率)
- C#界面设计
- ueditor富文本的使用以及“未找到上传文件”时的解决办法
- java中==与 String中 equals 和对象中equals比较
- Spark Checkpoint写操作代码分析
- 放电式消除BIOS密码(有图)
- 点击空白区域隐藏软键盘输入法
- 小马哥------山寨苹果6s(A9900-912G61-B 尾插盖板A953标示刷机拆机准图与开机识别图 低配机
- poj-1006 中国剩余定理
- 【Thinking in Java真题精选】2. 存在继承关系时的类加载顺序
- [2016JZSC]【NOIP2016提高A组模拟7.17】总结
- POJ3579