zoukankan      html  css  js  c++  java
  • Java String处理入门 null或空值的判断处理

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

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

    转自:http://hi.baidu.com/lvzhnan/blog/item/fe8d55d8b62d962410df9b01.html

  • 相关阅读:
    (引)spring学习笔记1.什么是控制反转
    Arduino 各种模块篇 步进电机 step motor 舵机 servo 直流电机 总复习
    Raspberry Pi Wireless Adaptor
    Pyramid 使用总结1
    Arduino 各种模块篇 人体红外感应模块 proximity sensor
    Pyramid 使用总结2
    Webcam Streaming Desktop Recording on Linux for ubuntu or its destros
    Arduino 各种模块篇 步进电机 step motor( 不用库,不用shield, 纯)
    Arduino 各种模块篇 motor shield 电机扩展板(舵机、直流电机、步进电机party)
    转载 stepper motors
  • 原文地址:https://www.cnblogs.com/hnrainll/p/2412439.html
Copyright © 2011-2022 走看看