Вопрос по java, stringbuilder – Как проверить ноль на 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 }
Имеет ли смысл приведенный выше код или как его изменить?
StringBuilder
Maroun
Значение null означает, что в куче для этой ссылочной переменной нет объекта. Это является общим для всех объектов Java, а не только дляStringBuilder
и Пусто означает.""
В своем коде вы создали объект StringBuilder, поэтому проверка нулевого значения является излишней. И вы можете проверить пусто с помощьюisEmpty()
метод из Java Строка API
if(state.tostring().isEmpty()) {
//
}
И проверка на ноль - это правильно. Найти исправленную версию здесь
if (state == null) {
// ...bla 1
} else if (state.tostring().isEmpty()) {
//... bla 2
}
Ваш второйif
состояние броситNullPointerException
еслиstate
нулевой. Такif
должны быть вложены сif else
В Javanull
этоссылочный буквальный, Если переменная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
состояние.
Нет,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");
}
emptyBuilder.toString().equals(""))
должно бытьemptyBuilder.toString().isEmpty())
Fiddle Freak
StringBuilder
определяется в предыдущем утверждении. Я представил правку, чтобы удалить его, который должен исправить чек.
Abandoned Cart
Нет.empty
означает, что в StringBuilder нет символов.null
означает, что объект StringBuilder отсутствует вообще.
Переменная толькоnull
если он имеет ссылочный тип (например, String, StringBuilder, Set, как thumbrule: все типы, написанные заглавными буквами), и он еще не инициализирован или для него явно установлено значение.null