问题描述
|
我有一个字符串,它是从数据库中读取的。该字符串可以只是\“ null \”。我需要确定它是否为空?在以下几种方法中,什么是合适的方法?
String a = …;
If (a == null)
If ( a.length == 0)
我也看到类似的东西
If a.equals(“ “)
这是如何运作的?
解决方法
if (a == null)
在Java中,“ 3”比较引用,因此您可以检查引用a是否指向null。如果a
等于null,则a.length
和a.equals
会引发NullPointerException,因为您不能在null上调用方法。
当您将字符串与等值进行比较时,即:
当且仅当
参数不为null,并且为String
表示相同的对象
字符序列作为此对象。
因此,即使根据文档可以在null上调用equals(如前所述,我们也不能如此),但无论如何它永远都不会返回true。
仅当a
等于\"\"
(空字符串)时,String.length才返回零。按照方法:
返回此字符串的长度。的
长度等于数量
字符串中的Unicode代码单位。
如有疑问,请进行测试! :-)
, 这是在Java中检查nullString
值的方式:
String a = ...;
if (a == null) {
// ...
}
由于a是null
,因此以下内容抛出NullPointerException
:
String a = null;
if (a.length() == 0) {
// ...
}
以下检查是否有一个空字符串,它不同于null
! (如果a
是null
,它也会抛出NullPointerException
)
String a = ...;
if (a.equals(\"\")) {
// ...
}
以下内容(与上面类似)检查包含单个空格字符的一个字符串。 (如果a
是null
,它也会抛出NullPointerException
)
String a = ...;
if (a.equals(\" \")) {
// ...
}
, 您似乎可以轻松地进行测试,但是在Java中,您可以使用
if( a == null ) ...
测试字符串是否为null
。
您的第二个例子应该是
if( a.length() == 0)
它只是测试看看String是否为空,而不是null
。值\"\"
的长度为0。如果a
实际上是null
,则该示例将引发异常,因为您无法在Java中的null
引用上调用方法。
您的最后一个示例正在测试以查看String是否为空格字符。
, 这完全取决于数据库库如何解释数据库中的NULL值。
有些可能以null
字符串形式传递它们,有些可能以空字符串形式传递它们,有些则可能引发异常-这都取决于您如何配置它以及所使用的软件。
不知道您使用的是哪种数据库访问器,就不可能确定地回答这个问题。
, 我用 ...
if(string == null || string.trim.length() == 0) {
// string is null or empty
}
话虽这么说,数据库中也有NULL值,在通过ResultSet时应该检查。如 ...
String nameVal = rs.getString (\"name\");
if (rs.wasNull ())
nameVal = \"(no name available)\";
对于Nullable列,SQL是三态的。列可以具有值,列可以为NULL或列可以包含空String。 NULL具有明确的含义,在对数据库代码进行编程时需要牢记。
, if(a!=空&& a.length == 0)
//然后为空
, 出于语义原因,我将使用“ 2”。就在那儿,您很清楚正在检查一个空字符串。
, 如果字符串可以是实际值\“ null \”,则使用
if(a.equals(\"null\"))
如果对象可以设置为NULL,则使用
if(a == null)
最好的办法是将它们结合起来
if(a == null || a.equals(\"null\"))
, 如果你有 :
String test = getIntent().getStringExtra(\"value\");
你应该 :
if ( test.equalsIgnoreCase(\"null\")){
dosomething...
}else {
dosomething...
}
, try{
methodWhichUsesTheString(a);
}catch (Exception NullPointerException){
//string a seems to be null
a = \"Re-assign some desired value that would make things work\" ;
}