博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java String处理入门 - null或空值的判断处理
阅读量:6991 次
发布时间:2019-06-27

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

hot3.png

笔者在开发过程中,常常碰到过下面这些错误的用法:

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 Test {    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.java

c:\>java TestNullOrEmpty

value is null.
value is blank but not null.
value is " "
value is "hello me!"

转载于:https://my.oschina.net/kevinvane/blog/125517

你可能感兴趣的文章
SXSSFWorkbook用于海量数据Excel导出类
查看>>
快文一搏之“这么简单的产品,我也可以写一个”
查看>>
CentOS 6.4 安装搭建 Scrapy 0.22 环境
查看>>
GridView长按item事件
查看>>
mysql脚本导入导出
查看>>
expansion character (code 0x8 at [row,col,system-id]: [3210,96,"file:/conf/hive-site.xml"]
查看>>
快手AAuto Quicker正式版
查看>>
微信小程序 元素居中
查看>>
Hadoop控制输出文件命名
查看>>
MVPArms学习笔记[待续]
查看>>
JavaScript如何计算两个颜色之间的渐变色值?
查看>>
Android起步
查看>>
3.2 mysql登陆
查看>>
(window,parent,opener,top).location.reload方法汇总
查看>>
Spring Boot+MyBatis 多数据源配置
查看>>
极客标签:可能是目前最好的前端代码学习工具
查看>>
吐槽swoole
查看>>
springboot的三种启动方式
查看>>
【Android入门】-【AndroidManifest.xml】-【中英对照】
查看>>
error:Error running 'env GEM_PATH=/Users/*
查看>>