`
Leon.Wood
  • 浏览: 290866 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

null或空值的判断处理-java

 
阅读更多

null或空值的判断处理-java

原帖地址:http://blog.csdn.net/ghost_t/article/details/5811485

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

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

 

分享到:
评论

相关推荐

    Java中String判断值为null或空及地址是否相等的问题

    本文主要讨论了如何正确判断Java中的String对象是否为null、空值("")以及它们的地址是否相等。在处理字符串时,了解这些概念对于避免程序出错至关重要。 首先,我们需要区分`null`和空字符串`""`。`null`表示变量...

    深入Java关键字null

    综上所述,`null`在Java中扮演着重要的角色,它不仅是一个特殊的值,还是编程中常见的一种状态标志,用于处理不确定或未初始化的对象引用。正确理解和使用`null`可以帮助开发者避免常见的编程陷阱,提高代码的质量和...

    JAVA判断空值方法原理解析

    需要注意的是,在进行空值判断时,必须先判断 `s == null`,否则可能抛出 `java.lang.NullPointerException`。 3. 示例程序 以下是一个示例程序,演示了上述四种方法: ```java public class String_Demo01 { ...

    velocity为空判断

    在使用Velocity作为视图层处理数据时,常常需要进行空值判断,确保模板能够正确地处理不存在或者值为空的情况。下面我们将详细探讨在Velocity中如何进行空值和空字符串的判断。 ### 1. 判断Velocity变量是否为null ...

    还在用if(obj!=null)做非空判断,带你快速上手Optional

    Optional 是 Java 8 中引入的新特性,旨在解决空指针异常(Null Pointer Exception,NPE)这个长期困扰开发者的问题。下面我们将对 Optional 的基本概念、使用方法、优点等进行详细的介绍。 Optional 的基本概念 ...

    空值引用异常解决办法.md

    为了解决这个问题,开发者们总结了多种方法,包括在使用变量前确保其已初始化、在访问变量前进行空值检查、使用Java8引入的Optional类进行优雅的空值处理,以及Java11中增加的默认值或默认值生成策略等。在解决空值...

    java万能判空工具类-可直接使用

    这个方法通常用于检查实例变量或方法的返回值,确保它们在被进一步处理之前不是null。 2. **字符串判空**:`CheckUtil.isNotEmpty(String str)` 方法扩展了对象判空的概念,不仅检查字符串是否为null,还检查其长度...

    空值引用异常(解决方案).md

    其次,Java8及以上版本引入了一个新的类Optional,用于对可能为null的值进行优雅处理。Optional类通过ifPresent等方法提供了一种安全的方式来操作可能不存在的对象,从而避免空指针异常。在使用Optional类时,首先...

    空值引用异常如何解决.md

    在不同编程语言中,空值的表现形式可能不同,如Java中的null或Python中的None。为了解决这一问题,程序员需要在访问对象的属性或方法之前,确保该对象已经被正确初始化并且不是空值。这种检查可以预防空指针异常,...

    Java错误集

    3. **外部调用返回空值**:从数据库或其他服务获取的数据可能为空,如果直接使用这些数据而没有进行检查,也会引发此类错误。 **示例分析**: - **示例1:直接访问request参数** ```java out.println(request....

    net.sf.json.JSONObject 为null 的判断方法

    在处理JSON数据时,我们经常需要判断JSON对象是否为空,以便进行适当的处理。 通常,我们可能会直接使用Java的`== null`来检查一个对象是否为`null`,例如: ```java JSONObject detail = JSONObject.fromObject(...

    Java 基础核心总结.pdf

    null是Java中的特殊值,表示对象引用的空值,而Null-Safe设计模式可以帮助避免空指针异常。Java.IO、Java.lang和Java.math等包提供了丰富的类和接口,如Number类的子类和数学运算,以及网络编程相关的类。 Java分为...

    java经典面试试题(从数据结构到设计模式)

    - `null`:空值。 - `package`:声明包。 - `private`:私有访问修饰符。 - `protected`:受保护访问修饰符。 - `public`:公共访问修饰符。 - `return`:返回值。 - `short`:短整型数据类型。 - `static`:静态...

    SpringBoot项目中处理返回json的null值(springboot项目为例)

    本文以spring boot项目为例给大家介绍SpringBoot项目中处理返回json的null值问题,本文通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友参考下

    java面试题集锦

    - **空键和空值**:`Hashtable` 不允许键或值为 `null`,而 `HashMap` 允许一个 `null` 键和任意数量的 `null` 值。 - **性能**:由于 `Hashtable` 的同步机制,`HashMap` 在单线程环境下的性能更好。

    Java计算机核心编程笔记

    - `null`:空值。 - `goto`:跳转语句(Java中未使用)。 - `const`:常量修饰符(Java中未使用)。 #### 七、变量命名与作用域 - **变量命名规则**: - 类名首字母大写,多个单词组合时,每个单词首字母大写(大...

    java.lang.NullPointerException(解决方案).md

    Java中的空指针异常发生在尝试使用空引用(null)调用实例方法或访问字段时。解决空指针异常的方法有很多,以下将详细介绍几种常用的解决方案,并提供相应的代码示例。 首先,对于空指针异常,最直接的解决方案是在...

    java高效编程.pdf

    - 在访问对象的成员或方法之前,始终进行空值检查,防止空指针异常。 7. **使用`this`关键字**: - 当成员变量和局部变量名称冲突时,使用`this`关键字来明确访问成员变量。 8. **字符串处理**: - 避免频繁...

Global site tag (gtag.js) - Google Analytics