这些之间有区别吗?
if(myString.equals("")){
}
if(myString.equals(null)){
}
if(myString == ""){
}
我有一个字符串,我不知道它是空的还是有一些空间我只是不想阻止它写在数据库中,如果它是无效的(如果是空的或有一些空格)。
答案 0 :(得分:10)
您的每个示例都彼此不同。
myString
是否为空(一个字符串中没有字符)NullPointerException
myString
是否引用空字符串常量。如果变量是从空字符串常量或显式初始化的话,如果用一些“生成的”空字符串(例如,new StringBuilder().toString()
)初始化变量然后显式添加,那么情况就是如此使用intern()
。正如评论中所指出的,第一个例子也可能抛出NullPointerException
,但不是第三个。
答案 1 :(得分:5)
要实现您想要的目标,请写下:
if (!myString.trim().equals("")) {
// write to database
}
或myString
可能null
:
if (myString != null && !myString.trim().equals("")) {
// write to database
}
答案 2 :(得分:3)
是的。
如果您的字符串为空,则首先返回true。
第二个将永远返回false。
如果您的字符串的定义完全如下,则第三个将返回true:
String myString = "";
请注意,这与案例1不同!第一次测试价值平等,第二次测试身份。
String myString = "";
String myOtherString = new String(myString);
assert myString == "";
assert myOtherString.equals("");
assert myOtherString != "";
底线是:
myString == null
进行空测试,答案 3 :(得分:2)
//true if myString is the empty string. will fail on " "
if(myString.equals("")){
}
//always false, or fails
//if myString is null, you'll get a NullPointerException
//if it isn't, you'll get false
if(myString.equals(null)){
}
//a bad way to do things with unexpected results.
//when dealing with objects, == is true when each are the same object.
//two different objects that have the same content or value (e.g. clones)
//will return false using this technique
if(myString == ""){
}
答案 4 :(得分:1)
如果您不愿意依赖外部库,您可以使用apache commons StringUtils类,它提供了一个名为“isNotBlank()”的方法,它似乎完全符合您的需要:
Checks if a String is not empty (""), not null and not whitespace only.
StringUtils.isNotBlank(null) = false
StringUtils.isNotBlank("") = false
StringUtils.isNotBlank(" ") = false
StringUtils.isNotBlank("bob") = true
StringUtils.isNotBlank(" bob ") = true
答案 5 :(得分:0)
Java中的字符串只是另一个对象。你的第一个比较是最正确的。它将myString与空白进行比较,如果您的字符串也为空(“”),则返回true。第二次比较总是错误的。第三,它比较对象的相等性(将其视为比较对象的地址)。我想总是会返回false,除非你的字符串是String myString =“”(在这一点上不确定)。
答案 6 :(得分:0)
他们都是截然不同的。假设myString为非null,
答案 7 :(得分:0)
只需使用Apache Commons StringUtils.isBlank()
编辑:要使用@ zim2001的方法实现您想要的目标,请执行以下操作:
if ( StringUtils.isNotBlank(myString) ) {
// write to database
}
这比当前接受的答案更容易阅读。 (但请在这里看到其他帖子,以了解使用String的细节。)