Вопрос по java, stringbuilder – Как проверить ноль на StringBuilder?

16

Я хочу проверить на ноль или пусто конкретно в моем коде. Пустые и нулевые одинаковы для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 }

Имеет ли смысл приведенный выше код или как его изменить?

Если вы запустите статический анализ для своего кода, он будет жаловаться, что код в блоке if (state == null) никогда не будет выполнен как "государство" никогда не может быть нулевым в этой строке (поскольку оно было просто инициализировано ненулевым значением). Это должно дать указатель на ноль и "" быть совсем другими вещами. Torben
спасибо, я пропустил еще одну строку в моем коде .. я отредактирую ее и добавлю еще несколько деталей. user1145280
(поскольку он был только что инициализирован с ненулевым значением). где именно оно становится ненулевым? user1145280
Это'Не везде одно и то же.StringBuilder Maroun
StringBuilder state = new StringBuilder (); это делает состояние ненулевым jamp

Ваш Ответ

6   ответов
0

Код ниже может помочь вам,

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

Значение 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

@ user1145280: проверил обновленный ответ. Abimaran Kugathasan
Пожалуйста, прокомментируйте мой код user1145280
хорошо, я немного понял, но, пожалуйста, проверьте отредактированный код один раз user1145280
@ user1145280, проверь ответ Abimaran Kugathasan
9

В 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 состояние.

0

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

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

Нет,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");
}
Да, оба одинаковы. Kick
делает состояние StringBuilder = новые StringBuilder () и состояние StringBuilder = новые StringBuilder ("") такие же ?? user1145280
emptyBuilder.toString().equals("")) должно бытьemptyBuilder.toString().isEmpty()) Fiddle Freak
Этот ответ неверен. Второй пример в нем не работает, потому что emptyBuilder не равен null, что делает оператор System.out.printLn мертвым кодом. Marquez
@Marquez Проверка нуля была совершенно ненужной, потому чтоStringBuilder определяется в предыдущем утверждении. Я представил правку, чтобы удалить его, который должен исправить чек. Abandoned Cart
1

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

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

Пожалуйста, предложите для кода user1145280

Похожие вопросы