[英]StringBuilder() vs StringBuilder(null) vs StringBuilder(“”)
[英]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 }
以上代码是否有意义或我应该如何更改?
不, 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");
}
在Java中, null
是引用文字 。 如果变量为null
则不引用任何内容。
因此,如果你有StringBuilder s = null
,这意味着s
是StringBuilder
类型,但它不是指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.