我想在我的代码中专门检查null或为空。对于Java中的StringBuilder
,empty和null是否相同?
例如:
StringBuilder state = new StringBuilder();
StringBuilder err= new StringBuilder();
success = executeCommand(cmd, state, err);
/* here executeCommand() returns empty or null in state, I cant make changes in <br/> executeCommand() so can I check it in my code somehow for state, if its null or empty? */<br/>
if (state == null) { //do blabla1 }
if (state.tostring().equals("")) { //do blabla2 }
以上代码是否有意义或我应该如何更改?
答案 0 :(得分:30)
不,null
和empty
与StringBuilder
不同。
StringBuilder nullBuilder = null;
if(nullBuilder == null) {
System.out.println("Builder is null");
}
&安培;
StringBuilder emptyBuilder = new StringBuilder("");
if(emptyBuilder == null || emptyBuilder.toString().equals("")) {
System.out.println("Builder is empty");
}
答案 1 :(得分:9)
在Java中,null
是引用文字。如果变量是null
则不是指任何东西。
因此,如果您有StringBuilder s = null
,则表示s
的类型为StringBuilder
,但它不是指StringBuilder
个实例。
如果您有非null
引用,那么您可以在引用的对象上调用方法。在StringBuilder
类中,一种方法是length()
。实际上,如果您使用length()
引用调用null
,则Java运行时将抛出NullPointerException
。
因此,这段代码很常见:
If (s == null || s.length() == 0/*empty if the length is zero*/){
// do something
它依赖于以下事实:||
的评估是从左到右,一旦达到第一true
条件就停止。
答案 2 :(得分:4)
Null意味着,该引用变量的堆中没有对象。这对于所有java对象都是通用的,不是特定于StringBuilder
而空是""
。
在您的代码中,您创建了一个StringBuilder对象,因此检查null是多余的。并且,您可以使用java String api
中的isEmpty()
方法检查空
if(state.tostring().isEmpty()) {
//
}
检查null是正确的。在这里找到更正的版本
if (state == null) {
// ...bla 1
} else if (state.tostring().isEmpty()) {
//... bla 2
}
如果if
为空,则第二个NullPointerException
条件将抛出state
。因此,if
应与if else
答案 3 :(得分:1)
没有。 empty
表示StringBuilder中没有字符。 null
表示根本没有StringBuilder对象。
如果变量具有引用类型(例如String,StringBuilder,Set,作为thumbrule:所有大写类型)并且它尚未初始化或已明确设置为{{1>,则变量仅为null
}}
答案 4 :(得分:0)
以下代码可能对您有帮助,
StringBuffer sb = new StringBuffer();
String str = sb.toString();
if(!"".equals(str)) {
System.out.println("String : " + str);
} else {
System.out.println("Empty Builder");
}
答案 5 :(得分:0)
您可以尝试这样
StringBuilder state = new StringBuilder();
if(StringUtils.isNotBlank(state .toString())){
//this will check for null, " ", ""
}