use*_*280 17 java stringbuilder
我想在我的代码中专门检查null或empty.StringBuilder在Java中,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 }
Run Code Online (Sandbox Code Playgroud)
以上代码是否有意义或我应该如何更改?
Kic*_*ick 31
不,null并且empty不同StringBuilder.
StringBuilder nullBuilder = null;
if(nullBuilder == null) {
System.out.println("Builder is null");
}
Run Code Online (Sandbox Code Playgroud)
&
StringBuilder emptyBuilder = new StringBuilder("");
if(emptyBuilder == null || emptyBuilder.toString().equals("")) {
System.out.println("Builder is empty");
}
Run Code Online (Sandbox Code Playgroud)
在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
Run Code Online (Sandbox Code Playgroud)
它依赖于以下事实:评估||是从左到右,一旦达到第一个true条件就停止.
Null 意味着,该引用变量的堆中没有对象。这对所有java对象都是通用的,而不是特定于StringBuilder和Empty的意思,"".
在您的代码中,您创建了一个 StringBuilder 对象,因此检查 null 是多余的。并且,您可以使用isEmpty()java String api 中的方法检查空
if(state.tostring().isEmpty()) {
//
}
Run Code Online (Sandbox Code Playgroud)
并且检查 null 是正确的。在这里找到更正的版本
if (state == null) {
// ...bla 1
} else if (state.tostring().isEmpty()) {
//... bla 2
}
Run Code Online (Sandbox Code Playgroud)
如果为空,您的第二个if条件将抛出。所以应该嵌套NullPointerExceptionstateifif else
| 归档时间: |
|
| 查看次数: |
65771 次 |
| 最近记录: |