`

JAVA-null或空值的判断处理

    博客分类:
  • Java
 
阅读更多

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!"

 

引自博客:

http://garlics.blog.51cto.com/2682515/895865

分享到:
评论

相关推荐

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

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

    深入Java关键字null

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

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

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

    JAVA判断空值方法原理解析

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

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

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

    阿里巴巴Java开发手册(嵩山版).zip

    - **空值处理**:避免对null对象进行操作,减少NullPointerException。 - **异常处理**:异常不应被简单地忽略,应捕获并处理,或者向上抛出。 - **日志规约**:合理使用日志记录,便于问题定位和性能监控。 3. ...

    java代码-实训5 判断字符串

    实训5的主题聚焦于判断字符串,这通常涉及检查字符串的特定属性,比如空值、是否包含某个子串、字符排序等。以下是一些关于Java中字符串判断的基本知识点: 1. **字符串初始化**:在Java中,字符串是对象,可以使用...

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

    通常,我们可能会直接使用Java的`== null`来检查一个对象是否为`null`,例如: ```java JSONObject detail = JSONObject.fromObject("123"); if (detail == null) { detail = new JSONObject(); } ``` 然而,对于...

    Java 基础核心总结.pdf

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

    java高效编程.pdf

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

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

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

    java面试题集锦

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

    回复:Java迷题:等于,还是不等于?

    这个问题涉及到Java中的数据类型、变量赋值、比较操作符以及空值(NULL)的处理。让我们深入探讨这个Java谜题,了解何时使用“==”和“!=”,以及如何正确处理NULL。 首先,我们要知道Java中的“==”操作符用于比较两...

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

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

    Java计算机核心编程笔记

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

    java集合与映射(牛)

    - `Hashtable`不允许键或值为null,而`HashMap`允许一个空键和多个空值。 3. **TreeMap** - **特点**: - 基于红黑树实现。 - 保证映射关系的顺序,通常按照键的自然顺序或创建映射时提供的Comparator排序。 -...

    Java面试题总结

    - **空值处理**:`HashTable`不允许键或值为`null`,而`HashMap`允许键或值为`null`,提供了更多的灵活性。 #### 4. HashMap与TreeMap区别 - **存储方式**:`HashMap`通过哈希码存储和查找,不保证元素的顺序;`...

    自整理Java关于基础和框架的面试题

    ### 自整理Java关于基础和框架的面试题 #### 基础知识点 ##### JDK常用的包 - **java.lang**: 包含所有基本类,如`String`、`Math`等。 - **java.util**: 提供集合框架、日期/时间设施、事件模型、杂项实用程序类...

    java关键字.pdf

    - `null`:空值,表示对象引用未指向任何对象。 - `true`和`false`:布尔类型的常量。 7. **其他关键字**: - `super`:用于访问父类的方法或字段。 - `this`:引用当前对象,常用于区分成员变量和局部变量。 ...

Global site tag (gtag.js) - Google Analytics