博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
==与equals
阅读量:3712 次
发布时间:2019-05-21

本文共 1676 字,大约阅读时间需要 5 分钟。

= =:判断的是两个对象的地址是否一致

equals:关键在于Object的方法equals是否被覆盖

未覆盖:Object类中equals比较的是地址,等价于 “= =”,方法如下

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

覆盖:按覆盖规则来,例如String类

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

String类同时有个常量池的内容,会对直接赋值的这些内容放入常量池

public class Test3 {
public static void main(String[] args) {
String a = new String("ab"); // a 为一个引用 String b = new String("ab"); // b为另一个引用,对象的内容一样 String aa = "ab"; // 放在常量池中 String bb = "ab"; // 从常量池中查找 if (aa == bb) // true System.out.println("aa==bb"); if (a == b) // false,非同一对象 System.out.println("a==b"); if (a.equals(b)) // true System.out.println("a equals b"); if (42 == 42.0) {
// true System.out.println("true"); } }}

注:

  • Object的equals方法容易抛空指针异常,可以通过 **确定有值的对象.equals()**来调用
  • 更推荐使用Objects.equals(Object a, Object b),这样可以通过a != null来避免空指针异常
public static boolean equals(Object a, Object b) {
return (a == b) || (a != null && a.equals(b));}

转载地址:http://dlbjn.baihongyu.com/

你可能感兴趣的文章
Java练习题(一) 自定义多个字符和数字,求出6位随机数的组合
查看>>
Java练习题(二)求出一个文件的目录名以及目录总个数
查看>>
Java类名.方法和变量
查看>>
Java小案例(二) 用数组实现增删查改排序
查看>>
Java小案例(一) 用数组实现登录注册、增加职工并查看信息
查看>>
有趣的一行代码
查看>>
Java函数式编程和面向对象编程
查看>>
Java中List、Map、Set三个接口,存取元素时,各有什么特点?
查看>>
客户端与服务器(C/S架构与B/S架构)、AJax学习
查看>>
jsp中String path = request.getContextPath()的作用
查看>>
登录界面验证码的实现
查看>>
EL表达式
查看>>
Javaweb MVC设计模式、Modle发展史、项目分层和三层架构
查看>>
HTML表格和HTML表单
查看>>
JSP访问数据库,Session对象和九大内置对象
查看>>
Springboot分层图解
查看>>
并查集(Disjiont Set)
查看>>
Java操作HBase
查看>>
Linux编程考前测试题
查看>>
Openstack面试题和知识点总结
查看>>