繁体   English   中英

如何在StringBuilder上检查null?

[英]How to check null on StringBuilder?

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

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

不, nullempty对于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");
}

在Java中, null引用文字 如果变量为null则不引用任何内容。

因此,如果你有StringBuilder s = null ,这意味着sStringBuilder类型,但它不是指StringBuilder实例。

如果您有非null引用,那么您可以自由地调用引用对象上的方法 StringBuilder类中,一个这样的方法是length() 实际上,如果您使用null引用调用length()那么Java运行时将抛出NullPointerException

因此,这段代码很常见:

If (s == null || s.length() == 0/*empty if the length is zero*/){
    // do something

它依赖于评估||的事实 是从左到右,一旦达到第一个true状态就停止。

Null意味着,堆中没有该引用变量的对象。 这对所有java对象都是通用的,不是特定于StringBuilder和Empty意味着""

在您的代码中,您创建了一个StringBuilder对象,因此检查null是多余的。 并且,您可以使用java String api中的isEmpty()方法检查空

if(state.tostring().isEmpty()) {
//
}

并且检查null是正确的。 在这里找到更正的版本

if (state == null) {
// ...bla 1
} else if (state.tostring().isEmpty()) {
//... bla 2
}

如果state为null,则第二个if条件将抛出NullPointerException 所以if应该与if else嵌套

empty意思是,StringBuilder中没有字符。 null表示根本没有StringBuilder对象。

如果变量具有引用类型(例如String,StringBuilder,Set,作为thumbrule:所有大写类型)并且它尚未初始化或已显式设置为null则该变量仅为null

以下代码可以帮助您,

StringBuffer sb = new StringBuffer();
String str = sb.toString();
if(!"".equals(str)) {
    System.out.println("String : " + str);
} else {
    System.out.println("Empty Builder");
}

你可以这样试试

StringBuilder state = new StringBuilder();
if(StringUtils.isNotBlank(state .toString())){   
//this will check for null, " ", ""
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM