Подтвердить что ты не робот

Как проверить значение null на StringBuilder?

Я хочу проверить нуль или пусто в моем коде. Пустые и пустые одинаковы для StringBuilder в Java?

Например:

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 }

Является ли над кодом смысл или как его изменить?

4b9b3361

Ответ 1

Нет, 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");
}

Ответ 2

В 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.

Ответ 3

Нуль означает, что в этой куче для этой ссылочной переменной нет объекта. Это относится ко всему объекту java, не относящемуся к StringBuilder, а Empty означает "".

В вашем коде вы создали объект StringBuilder, поэтому проверка null является избыточной. И, вы можете проверить пустое с помощью метода isEmpty() in from java String api

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

И проверка нулевого значения верна. Найдите исправленную версию здесь

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

Ваше второе условие if будет бросать NullPointerException, если state равно null. Поэтому if следует вложить в if else

Ответ 4

Нет. empty означает, что в StringBuilder нет символов. null означает, что объект StringBuilder вообще отсутствует.

Переменная есть только null, если у нее есть ссылочный тип (например, String, StringBuilder, Set, как thumbrule: все заглавные типы), и он еще не инициализирован или явно установлен в null.

Ответ 5

Ниже приведенный код может помочь вам,

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

Ответ 6

Вы можете попробовать как это

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