(十八)java中equals和==以及toString
JAVA 以及 十八 equals toString
2023-09-14 08:57:15 时间
span >
toString方法属于Object,Object是所有类的顶级父类,都继承了toString方法,在实际使用的时候需要重写toString方法然后实现内容的直接输出。
==用来判断两个变量是否相等,如果是基本类型,则只要值相等,判断的结果就是true,例如65和‘A’比较,结果就是true。如果是比较的引用类型,那么只有在两个变量指向的是同一对象时才是true,例如String a="111",String a1=new String("111");他们==比较的结果就是false,因为他们是两个对象。
如果想要让两个只要内容相同的对象比较结果就是true,那么可以使用equals来比较,但是需要对equals进行重写。
equals默认情况下内部就是==比较,所以如果不重写的话,比较结果和==比较一样,在String中已经重写了equals方法。
重写equals方法是自定义相等的规则,所以不仅仅是能实现上述的情况,还可以让不相等的对象相等,是看怎么写了。
正确重写equals应遵循的条件:
1.对于任意x,x.equals(x)结果要是true;自反性
2.对于任意x、y,如果x.equals(y)是true,那么y.equals(x)也应该是true;对称性
3.对于任意的x、y、z,如果x.equals(y)是true,y.equals(z)是true,那么x.equals(z)也应该是true;传递性
4.对于任意x、y,若对象中用于等价比较的信息未变,那么无论调用多少次x.equals(y)的结果应该是同样的,要么都是true要么都是false;一致性
5.对于任何非null的对象,x.equals(null)一定是false;
重写equals方法的时候,一般要用到instanceof和强制类型转换,然后当类型匹配时再进行比较。
涂宗勋 认真生活,快乐工作,保持理想!https://blog.csdn.net/tuzongxun
==用来判断两个变量是否相等,如果是基本类型,则只要值相等,判断的结果就是true,例如65和‘A’比较,结果就是true。如果是比较的引用类型,那么只有在两个变量指向的是同一对象时才是true,例如String a="111",String a1=new String("111");他们==比较的结果就是false,因为他们是两个对象。
如果想要让两个只要内容相同的对象比较结果就是true,那么可以使用equals来比较,但是需要对equals进行重写。
equals默认情况下内部就是==比较,所以如果不重写的话,比较结果和==比较一样,在String中已经重写了equals方法。
重写equals方法是自定义相等的规则,所以不仅仅是能实现上述的情况,还可以让不相等的对象相等,是看怎么写了。
正确重写equals应遵循的条件:
1.对于任意x,x.equals(x)结果要是true;自反性
2.对于任意x、y,如果x.equals(y)是true,那么y.equals(x)也应该是true;对称性
3.对于任意的x、y、z,如果x.equals(y)是true,y.equals(z)是true,那么x.equals(z)也应该是true;传递性
4.对于任意x、y,若对象中用于等价比较的信息未变,那么无论调用多少次x.equals(y)的结果应该是同样的,要么都是true要么都是false;一致性
5.对于任何非null的对象,x.equals(null)一定是false;
重写equals方法的时候,一般要用到instanceof和强制类型转换,然后当类型匹配时再进行比较。
涂宗勋 认真生活,快乐工作,保持理想!https://blog.csdn.net/tuzongxun
相关文章
- hibernate正向生成数据库表以及配置——Student.java
- Java实现 LeetCode 798 得分最高的最小轮调 (暴力分析)
- Java 第十一届 蓝桥杯 省模拟赛 反倍数
- Java实现 LeetCode 416 分割等和子集
- java微信公众号JSAPI支付以及所遇到的坑
- [Linux] Install java and add JAVA_HOME, PATH
- Atitit 实现java的linq 以及与stream api的比较
- Atitit.swift 的新特性 以及与java的对比 改进方向attilax 总结
- paip.java 以及JavaScript (js) 的关系以及区别
- Java — java.lang.NullPointerException - 如何处理空指针异常
- 【Java用法】java 8两个List集合取交集、并集、差集、去重并集
- 详解jvm之java类加载机制和类加载器(ClassLoader) 深入理解Java类加载器(ClassLoader) 如何自定义类加载器 深入说明双亲委派 双亲委派模型的破坏者-线程上下文类加载器
- Cocos2d-Java安装和配置跨平台游戏引擎以及相关的开发工具
- Java web測试分为6个部分
- 【项目实战】Java代码反编译工具的使用 以及 如何对Java代码进行混淆?
- 【java基础】异常处理(Exception)
- 【java】Java 接口(Interface)