如何在StringBuilder上检查空值?

2022-09-02 05:29:30

我想在我的代码中专门检查空或空。在 Java 中,空和空值是否相同?StringBuilder

例如:

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 }

上面的代码有意义吗,或者我应该如何更改它?


答案 1

否,并且 对于 是不同的。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");
}

答案 2

在 Java 中,是一个引用文本。如果变量是 则 不引用任何内容。nullnull

因此,如果您有 ,则表示该类型,但它不是指实例。StringBuilder s = nullsStringBuilderStringBuilder

如果您有非引用,则可以在引用的对象上自由调用方法。在该类中,一个这样的方法是 。实际上,如果您要使用引用进行调用,则 Java 运行时将抛出 .nullStringBuilderlength()length()nullNullPointerException

因此,此代码很常见:

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

它依赖于这样一个事实,即 评估是从左到右,并在达到第一个条件后停止。||true


推荐