Java项目发现==顺手改成equals之后,会发生什么?
最近发生一件很尴尬的事情,在维护一个 Java 项目的时候,发现有使用 ==
来比较两个对象的属性,
于是顺手就把 ==
改成了 equals。悲剧发生......
==
和 equals 的区别
==
:对于基本类型来说是值比较,对于引用类型来说是引用比较
equals:引用比较,但一些类重写了 equals 方法,如 String、Integer 等,变成了值比较。
使用 equals 的前提
使用 equals 进行比较,如:
a 和 b 是两个对象
a.getId().equals(b.getId())
需要确保 a.getId()不为 null,因为 null 是没有.equals()方法的。
各种对象使用 equals
String 类型:
可以使用 StringUtils.equals()进行比较,该方法内置非空校验
其余封装类型:
可以使用 Objects.equals()进行比较,该方法内置非空校验
使用三目运算符:
a.getId() == null ? b.getId() == null ? false : true : a.getId().equals(b.getId())
Java项目发现==顺手改成equals之后,会发生什么?的更多相关文章
- vue2.0项目中 localhost改成ip地址访问
这里 你可以写成你的ip 那你的项目只能ip访问了,但是写成0.0.0.0的话 你既可已localhost 访问也可以ip访问 也可以写成 127.0.0.1也可以,也能local访问了和ip访问( ...
- iOS 项目中将 http 改成 https 后需要改动的地方(密钥验证)
这种是不验证证书的密钥 AFSecurityPolicy *policy = [AFSecurityPolicy policyWithPinningMode:AFSSLPinningModeNone] ...
- vue项目 Request Payload改成Form Data
vue项目中提交表单时,请求参数是Request Payload时在main.js中加 axios.defaults.headers.post['Content-Type'] = 'applicati ...
- web项目中url-pattern改成'/'后,js、css、图片等静态资源(404)无法访问问题解决办法
感谢http://blog.csdn.net/this_super/article/details/7884383的文章 1.增加静态资源url映射 如Tomcat, Jetty, JBoss, Gl ...
- web项目中url-pattern改成'/'后,js、css、图片等静态资源(404)无法访问问题解决办法
感谢http://blog.csdn.net/this_super/article/details/7884383的文章 1.增加静态资源url映射 如Tomcat, Jetty, JBoss, Gl ...
- 传统javaweb 改成 Maven项目
1. 项目右键-- Configure --Convert to Maven Project 后可以生成maven结构,多了红色框的 <project xmlns="http:/ ...
- 利用Kubernetes(K8S)部署JAVA项目
一.jar包和war包区别 首先简单介绍一下jar包和war包区别,当时就没分清,导致部署总是傻傻分不清楚. jar包:jar包就是java的类进行编译生成的class文件就行打包的压缩包.里面是一些 ...
- Qt动态库静态库的创建、使用、多级库依赖、动态库改成静态库等详细说明
本文描述的是windows系统下,通过qtcreator在pro文件中添加动态库与静态库的方法: 1.添加动态库(直接添加动态库文件.dll,非子项目) 通过qtcreator创建动态库的方法就不在此 ...
- 关于富文本编辑器—UEditor(java版)的使用,以及如何将UEditor的文件/图片上传路径改成绝对路径
突然发现好久没写博客了,感觉变懒了,是要让自己养成经常写文章的习惯才行.既可以分享自己的所学,和所想,和大家一起讨论,发现自己的不足的问题. 大家可能经常会用到富文本编辑器,今天我要说的是UEdito ...
随机推荐
- OpenWrt编译问题记录
错误一.config.status: error: cannot find input file: `xmetadataretriever/Makefile.in' configure: creati ...
- (转)linux下错误的捕获:errno和strerror的使用,以及perror和strerror的区别
经常在调用linux 系统api 的时候会出现一些错误,比方说使用open() write() creat()之类的函数有些时候会返回-1,也就是调用失败,这个时候往往需要知道失败的原因.这个时候使用 ...
- XOR算法
原理 依据的是异或门 即同为0,异为1 0^0=0 0^1=1 1^0=1 1^1=0 对一个数据进行两次XOR运算会得到这个数据本身 所以加密时就将message和其对应的key进行一波XOR运算得 ...
- connect & send 在三次握手过程中的有趣问题
一.问题回顾 面试的时候被问到的问题,原问题是: 1:写一下socket网络编程服务端和客户端常用的函数. 2:如果服务端在listen之后没有accept,那客户端的connect会返回吗?为什么? ...
- 【java+selenium3】自动化处理文件上传 (十三)
一.文件上传 文件上传是自动化中棘手的部分,目前selenium并没有提供上传的实现api,所以知道借助外力来完成,如AutoIt.sikuli. AutoIt , 这是一个使用类似BASIC脚本语言 ...
- vue引入elementUI(第三方样式库)
前置: 在已经安装好vue的前提下 ,没有安装vue参考: vue搭建教程 elementUI官网组件使用文档: elementUI使用文档 1.终端直接运行安装命令 npm i element-ui ...
- 基于霸道秉火的STM32F103ZET6嵌入式开发之------定时器中断3
1 #include "time.h" 2 #include "led.h" 3 #include "beep.h" 4 //¶¨Ê±Æ÷Ö ...
- Mybatis3源码加注释后后编译问题
参考:https://mp.weixin.qq.com/s/v0ihaPsuyGufdc_ImEqX8A给mybatis3源码加注释并编译源代码 编译命令: mvn clean mvn install ...
- jenkins项目发布
目录 一.简介 二.docker打包 一.后端打包 二.前端打包 三.启动容器 四.完整代码 五.发布测试 六.优化方案 七.源码地址: 八.参考 一.简介 1.该章节基于jenkins.Harbor ...
- mysql查询报错this is incompatible with sql_mode=only_full_group_by
临时改法:select @@GLOBAL.sql_mode;查询当前mysql的模式去掉ONLY_FULL_GROUP_BY重新设置:set @@GLOBAL.sql_mode='STRICT_TRA ...