Как проверить значение 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 }
Является ли над кодом смысл или как его изменить?
Ответы
Ответ 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, " ", ""
}