如何在StringBuilder上检查null?

时间:2014-02-04 13:14:28

标签: java stringbuilder

我想在我的代码中专门检查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 }

以上代码是否有意义或我应该如何更改?

6 个答案:

答案 0 :(得分:30)

不,nullemptyStringBuilder不同。

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, " ", ""
}