A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 136616244 中级黑马   /  2014-4-26 21:52  /  819 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

判断字符串是否为空有几种方式?

2 个回复

倒序浏览
有这么几种方式: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==""应该是一样的。

评分

参与人数 1技术分 +1 收起 理由
SyouRai_Tsk + 1

查看全部评分

回复 使用道具 举报
方法一: 最多人使用的一个方法, 直观, 方便, 但效率很低:
                                    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.

评分

参与人数 1技术分 +1 收起 理由
SyouRai_Tsk + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马