黑马程序员技术交流社区

标题: 判断字符串是否为空有几种方式? [打印本页]

作者: 136616244    时间: 2014-4-26 21:52
标题: 判断字符串是否为空有几种方式?
判断字符串是否为空有几种方式?
作者: Sunday    时间: 2014-4-26 21:58
有这么几种方式:someString=="";或someString.Length==0;或System.String.IsNullOrEmpty(someString);或someString==System.Empty;
用reflector 查看System.String 类型的定义:
知:

(1)System.String.IsNullOrEmpty 定义如下:
public static bool IsNullOrEmpty(string value)
{
    if (value != null)
    {
        return (value.Length == 0);
    }
    return true;
}


(2)至于System.String 的实例的Length属性,不用管它,Length==0字符串肯定为空;由(1)、(2)知someString.Length==0;和System.String.IsNullOrEmpty(someString)是一样样的;

(3)(不知道什么原因,我的reflector无法查看System.String中的重载运算符“==”),Ms给的“==”重载的说明是:

public static bool operator ==(string a, string b)
    Member of System.String

Summary:
Determines whether two specified strings have the same value.

Parameters:
a: The first string to compare, or null.
b: The second string to compare, or null.

Returns:
true if the value of a is the same as the value of b; otherwise, false.

如果用someString==""来用,我觉得可能会经过更多的步骤来判断someString 和空字符串的关系,效率可能会比System.String.IsNullOrEmpty稍低。
(4)System.String.Empty的定义是:
public static readonly String Empty = "";
所以someString==System.Empty 和someString==""应该是一样的。
作者: z1342802487    时间: 2014-4-26 21:58
方法一: 最多人使用的一个方法, 直观, 方便, 但效率很低:
                                    if(s == null ||"".equals(s));
方法二: 比较字符串长度, 效率高, 是我知道的最好一个方法:
                      if(s == null || s.length() <= 0);
方法三: Java SE 6.0 才开始提供的方法, 效率和方法二几乎相等, 但出于兼容性考虑, 推荐使用方法二.
                     if(s == null || s.isEmpty());
方法四: 这是一种比较直观,简便的方法,而且效率也非常的高,与方法二、三的效率差不多:
                     if (s == null || s == "");

      s == null 是非常有必要存在的.
  如果 String 类型为null, 而去进行 equals(String) 或 length() 等操作会抛出java.lang.NullPointerException.
  并且s==null 的顺序必须出现在前面,不然同样会抛出java.lang.NullPointerException.




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2