1,错误用法一: if (name == "") {//do something
}2,错误用法二:
if (name.equals("")) {//do something
}3,错误用法三:
if (!name.equals("")) {//do something
}

我们来解说一下:
上述错误用法1是初学者最容易犯,也最不容易被发现的错误,因为它们的语法本身没问题,Java编译器编译时不报错。但这种条件可能在运行时导致程序出现bug,永远也不会为true,也就是时说,if块里的语句永远也不会被执行。

上述用法二,用法三 的写法,是包括很多Java熟手也很容易犯的错误,为什么是错误的呢?也许你会感到纳闷。
对,它们的写法本身没错,但是,少了一个null判断的条件,试想,如果name=null的情况下,会发生什么后果呢?后果是,你的程序将抛出NullPointerException异常,系统将被挂起,不再提供正常服务。
当然,如果之前已经对name作了null判断的情况例外。

正确的写法应该先加上name != null的条件,如例:

if (name != null && !name.equals("")) {//do something
}或者if (!"".equals(name)) {//将""写在前头,这样,不管name是否为null,都不会出错。//do something
}

下面,我们举一个简单的例子:

TestNullOrEmpty.java
public class TestNullOrEmpty {public static void main(String[] args) {String value = null;testNullOrEmpty(value);value = "";testNullOrEmpty(value);value = " ";testNullOrEmpty(value);value = "hello me! ";testNullOrEmpty(value);}static void testNullOrEmpty(String value) {if (value == null ) { //正确的写法System.out.println("value is null. ");} else if ("".equals(value)) { //正确的写法System.out.println("value is blank but not null. ");} else {System.out.println("value is /" " + value + "/" ");}if (value == "") {  //NG 错误的写法//别用这种写法}}
}

编译执行:

c:/>javac TestNullOrEmpty.javac:/>java TestNullOrEmpty
value is null.
value is blank but not null.
value is " "
value is "hello me!"

null或空值的判断处理-java相关推荐

  1. oracle中入库判断空串,不同数据库和SpringDataJPA对字段值null,''空值的判断

    原由:在使用SpringDataJPA语句进行对数据库表的某个字段的空值查询时,如: findByIdAndNameIsNull findByIdAndNameIsNotNull 当name这个字段值 ...

  2. MySQL 中NULL和空值的区别?

    做一个积极的人 编码.改bug.提升自己 我有一个乐园,面向编程,春暖花开! 01 小木的故事 作为后台开发,在日常工作中如果要接触Mysql数据库,那么不可避免会遇到Mysql中的NULL和空值.那 ...

  3. MySQL 中NULL和空值的区别

    平时我们在使用MySQL的时候,对于MySQL中的NULL值和空值区别不能很好的理解.注意到NULL值是未知的,且占用空间,不走索引,DBA建议建表的时候最好设置字段是NOT NULL 来避免这种低效 ...

  4. mysql两个字段相减_MySQL 中NULL和空值的区别?

    作为后台开发,在日常工作中如果要接触Mysql数据库,那么不可避免会遇到Mysql中的NULL和空值.那你知道它们有什么区别吗? 学不动了,也不想知道它们有什么区别.大兄弟,不行啊,要面试! 前些天我 ...

  5. MySQL null与not null和null与空值‘‘的区别

    null 表示什么也不是, 不能=.>.< - 所有的判断,结果都是false,所有只能用 is null进行判断. 转自:https://segmentfault.com/a/11900 ...

  6. mysql null 0 空_MySQL中 null与not null和null与空值''的区别

    相信很多用了MySQL很久的人,对这两个字段属性的概念还不是很清楚,一般会有以下疑问: 1.字段类型是not null,为什么可以插入空值? 2.为什么not null的效率比null高? 3.判断字 ...

  7. pandas 空字符串与na区别_pandas中对nan空值的判断

    pandas基于numpy,所以其中的空值nan和numpy.nan是等价的.numpy中的nan并不是空对象,其实际上是numpy.float64对象,所以我们不能误认为其是空对象,从而用bool( ...

  8. java null什么意思_浅谈java中null是什么,以及使用中要注意的事项

    1.null既不是对象也不是一种类型,它仅是一种特殊的值,你可以将其赋予任何引用类型,你也可以将null转化成任何类型,例如: Integer i=null; Float f=null; String ...

  9. mysql的NULL和空值

    相信很多用了mysql很久的人,对这两个字段属性的概念还不是很清楚,一般会有以下疑问: 1.我字段类型是not null,为什么我可以插入空值 2.为毛not null的效率比null高 3.判断字段 ...

最新文章

  1. 部署ajax服务-支持jsonp
  2. .NET Core 的Generic Host 之Generic Host Builder
  3. java输入输出及文件_(java基础)Java输入输出流及文件相关
  4. linux驱动编写(设备树)
  5. Tomcat优化实践——网站运维
  6. 数据挖掘建模过程——思维导图
  7. java8中Function函数
  8. 计算机毕业后的打算英语作文,大学毕业后的职业生涯规划的英语作文
  9. JavaEE-01-温故(集合、泛型、io、多线程)知新(junit、内省、路径问题)
  10. 腾讯云主机凌晨内存上涨、CPU100%的问题排查与解决
  11. 【基于贪心的树型动态规划】【NOI2007】追捕盗贼
  12. 对大数据量Excel文件自动排版、转换成PDF用于印刷出版
  13. 龙王我当定了(一个在QQ刷龙王的脚本)
  14. 利用百度地图采集大量某一区域经纬度信息
  15. 2020年浙江理工大学新生赛 D DD_BOND看到的hcy
  16. google colab云服务器使用
  17. 动能芯片 | DP4301—SUB-1G高集成度无线收发芯片
  18. SEO优化之147SEO搜索引擎推送工具
  19. OSPF的七种状态机
  20. 13岁出道,16岁被小扎看中,19岁成脸书最年轻工程师,如今跳槽谷歌只为了.……

热门文章

  1. 库克时期的苹果和乔布斯时期的苹果是否有差距?
  2. python入门——P46魔法方法:描述符(Property的原理)
  3. Javascript的基础语法(标识符/变量)
  4. C++STL之fill()函数使用方法
  5. 如何在Ubuntu上安装MySQL
  6. sql server 群集_SQL Server 2014 –安装群集实例–分步(2/3)
  7. 服务网关Ocelot 入门Demo系列(01-Ocelot极简单Demo及负载均衡的配置)
  8. Ace Admin 学习笔记
  9. 使用postman模拟上传文件到springMVC的坑:the request was rejected because no multipart boundary was found...
  10. 编写delegate(明天补充)