一、概述

java中判等似乎很简单,==用来判断对象引用(内存地址)是否相同,equals用来判断值是否相同。你可以试用String对象轻松区分这一点。

那么在null判等(也就是判空操作)时呢?

可以通过如下代码明白两个判等的比较:

String name = null;if(null==name){

System.out.println("null==name");//通过

}

if(name==null){

System.out.println(name);

System.out.println("name==null");//通过}

String list= null;if(!"demo".equals(list)){

System.out.println("demo.equals(list)");//通过

}

//编译器会在此处提示一个警告:Null pointer access: The variable list can only be null at this location

if(!list.equals("demo")){

System.out.println("list.equals(demo)");//不通过

}

1.通过红色字体代码证明了String类型在==判等时

谁放前,谁放后是一样的。而null==xxxx这样的写法,我觉得只是一个规范习惯的方式,保证你不会少写=,因为你写null=xxx编译器肯定会给你报错。

那么,除了String类型的对象,其他类型的对象呢?是否在试用==时也是谁放前谁放后没有区别呢?

NullEquals e = null;if(e==null){

System.out.println("e==null");//通过

}if(null==e){

System.out.println("null==e");//通过

}

结果也一样,证明了null判等这件事上,哪中对象是无所谓的,谁放前放后都可以。

2.通过蓝色字体的代码证明了使用equals方法时,必须将非空的对象放在前面,null的对象一定不能放在前面。

所以这里要养成"".equals()方法来判空的操作

二、注意

这两个判等操作墨守成规的,你实现某个类,重写它的equals方法最好也是用来判断他们的值是否相等,否则其他程序员在使用时容易误会。

总结:判空时,养成null在前是个好习惯

判等时,为了避免被判断对象可能为空,所以把肯定不为空的对象放到前面是个好习惯

注:以上代码都经过测试

java判_java中判空相关推荐

  1. hive 判断子字符串_Java中检查空字符串(null或空白)的方法有几种?

    说明: 本文为牛旦教育原创,头条首发,转发须注明来源和原文网址. 1.摘要 在本文中,我们将介绍些方法检查Java中的空字符串(空的或空白符串).我们有些语言的原生方法以及几个库可用. 2.空与空白( ...

  2. java 程序计数器_Java中的程序计数器是什么

    程序计数器是当前线程正在执行的字节码的地址.程序计数器是线程隔离的,每一个线程在工作的时候都有一个独立的计数器. JAVA虚拟机管理的内存区域图 1.什么是程序计数器? 程序计数器是当前线程正在执行的 ...

  3. java 事务_Java中事务总结详解(精华)

    1.什么是JAVA事务? 通常的观念认为,事务仅与数据库相关. 事务必须服从ISO/IEC所制定的ACID原则.ACID是原子性(atomicity).一致性(consistency).隔离性 (is ...

  4. [转载] c++多态与java多态性_Java中的多态性

    参考链接: Java中的加法和串联 c++多态与java多态性 Polymorphism is one of the core concepts of OOPS paradigm. The meani ...

  5. java 且_JAVA中逻辑运算符“|”和“”与“||”和“”的用法

    1.使用规则: (1)& 可以用作逻辑与的运算符,表示逻辑与(and) a.当运算符两边的表达式的结果都为true时,整个运算结果才为true,否则,只要有一方为false,则结果为false ...

  6. java 包装类_Java中的包装类

    Java中哪些需要包装类 它们将原始数据类型转换为对象.如果我们希望修改传递给方法的参数,则需要对象(因为基元类型是按值传递的). java.util包中的类只处理对象,因此在这种情况下包装类也有帮助 ...

  7. java 难度_java中难度大一点的面试题

    1.请大概描述一下Vector和ArrayList的区别,Hashtable和HashMap的区别.(5) (1)Vector和ArrayList的异同 实现原理,功能相同,可以互用 主要区别: Ve ...

  8. math java 计算_Java中的数学计算函数汇总

    Math类:  java.lang.Math类中包含基本的数字操作,如指数.对数.平方根和三角函数. java.math是一个包,提供用于执行任意精度整数(BigInteger)算法和任意精度小数(B ...

  9. java中的多态性_[转载] c++多态与java多态性_Java中的多态性

    参考链接: Java中的加法和串联 c++多态与java多态性 Polymorphism is one of the core concepts of OOPS paradigm. The meani ...

最新文章

  1. poj 2831(次小生成树)
  2. 数据可视化【十】绘制地图
  3. 利用Arcgis for javascript API绘制GeoJSON并同时弹出多个Popup
  4. PyTorch框架学习三——张量操作
  5. JavaScriptSerializer 类
  6. 修正 Mui 下拉上拉刷新功能
  7. jsp自定义标签库打包步骤
  8. Java课程设计——学生成绩管理系统
  9. STC8H开发(十二): I2C驱动AT24C08,AT24C32系列EEPROM存储
  10. Ubuntu18 安装MeshLab软件
  11. Linux服务器CPU飙升排查
  12. NOIP模拟赛 队爷的讲学计划
  13. Android 分享功能之 微信 图片分享
  14. csdn里面代码块颜色
  15. 《我的眼睛--图灵识别》第十一章:实战演练:图像类识别
  16. 图傅里叶变换(GFT)
  17. 力扣-374题 猜数字大小(C++)- 二分
  18. echarts实现河南各省市区县地图(河南省各省市区县地图json文件可以在我博客里下载)
  19. 语言学大师 —— 乔姆斯基
  20. Master of Phi (欧拉函数 + 积性函数的性质 + 狄利克雷卷积)

热门文章

  1. java源代码实例倒计时_Java倒计时三种实现方式代码实例
  2. linux分区始柱号,找到了linux分区顺序错乱修复方法
  3. java core 生成路径_core文件生成和路径设置
  4. sata接口测试软件,如何查看电脑是否支持USB 3.0?Hwinfo32检测SATA端口的方法
  5. mysql semisync 恢复_mysql半同步复制(semi_sync_replication)搭建及使用
  6. 谷歌浏览器如何使用网页截图
  7. 腾讯视频上如何上传视频
  8. 搜狐视频怎么设置自动连播
  9. Android对接实现内网无纸化会议|智慧教室|实时同屏功能
  10. Easyui+Spring+Mybatis完整示例(前台)