我有一个字符串,可以从数据库中读取。字符串可以只是“null”。我需要判断它是否为空?在以下几个方面,做到这一点的适当方法是什么?
String a = …;
If (a == null)
If ( a.length == 0)
我也看到像
这样的东西If a.equals(“ “)
这是如何运作的?
答案 0 :(得分:4)
if (a == null)
在Java中,==
会比较引用,因此您可以检查引用是否指向null。如果a.length
等于null,a.equals
和a
将抛出NullPointerException,因为您无法在null上调用方法。
将字符串与equals进行比较时,即:
是真的,当且仅当 参数不为null并且是String 表示相同的对象 作为这个对象的字符序列。
所以,即使我们可以在null上调用equals(我们不能,如前所述),但是根据文档的说法,它永远不会返回true。
仅当a
等于""
(空字符串)时,String.length才会返回零。按照方法:
返回此字符串的长度。该 长度等于数量 字符串中的Unicode代码单元。
如有疑问,请测试一下! : - )
答案 1 :(得分:2)
这是在java中检查null String
值的方法:
String a = ...;
if (a == null) {
// ...
}
以下内容引发NullPointerException
,因为a为null
:
String a = null;
if (a.length() == 0) {
// ...
}
以下检查空字符串,它与null
不同! (如果a
是null
,它也会抛出NullPointerException
)
String a = ...;
if (a.equals("")) {
// ...
}
以下(与上面类似)检查包含单个空格字符的一个字符串。 (如果a
是null
,它也会抛出NullPointerException
)
String a = ...;
if (a.equals(" ")) {
// ...
}
答案 2 :(得分:2)
这似乎是您可以轻松测试的内容,但在Java中您使用
if( a == null ) ...
测试字符串是否为null
。
你的第二个例子应该是
if( a.length() == 0)
只是测试String是否为空,而不是null
。值""
的长度为0.如果a
确实是null
,则该示例会抛出异常,因为您无法在null
引用上调用方法在Java。
您的最后一个示例是测试String是否为空格字符。
答案 3 :(得分:1)
这完全取决于数据库库如何解释数据库中的NULL值。
有些人可能会将它们作为null
字符串传递给它们,有些可能会将它们作为空字符串传递,有些可能会抛出异常 - 这一切都取决于你如何配置它以及你正在使用什么软件。 / p>
在不知道您正在使用什么数据库访问器的情况下,无法肯定地回答这个问题。
答案 4 :(得分:1)
我用...
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或列可以包含空字符串。 NULL具有明确的含义,在编写数据库代码时需要牢记这一点。
答案 5 :(得分:0)
if(a!= null&& a.length == 0) //然后它是空的
答案 6 :(得分:0)
出于语义原因,我会使用if (a == null)
。在那里你很清楚你正在检查一个空字符串。
答案 7 :(得分:0)
如果字符串可以是实际值“null”,则使用
if(a.equals("null"))
如果对象可以设置为NULL,则使用
if(a == null)
最好的方法是将它们结合起来
if(a == null || a.equals("null"))
答案 8 :(得分:-2)
try{
methodWhichUsesTheString(a);
}catch (Exception NullPointerException){
//string a seems to be null
a = "Re-assign some desired value that would make things work" ;
}