Null = "" для строки

В Java эти два оператора одинаковы?

String a = null;
String b = "";

Он чувствует себя немного глупым вопросом, но в настоящее время имеет полный ментальный блок.

Ответ 1

Пустая строка и null отличаются. Пустая строка - это строка без символов, null не имеет строки вообще.

Вы можете вызывать методы в пустой строке, но если вы попытаетесь вызвать метод на null, вы получите исключение.

public static void main(String[] args)
{
    String a = null;
    String b = "";
    System.out.println(b.length());
    System.out.println(a.length());
}

Вывод:

0
Exception in thread "main" java.lang.NullPointerException
        at Program.main(Program.java:12)

Ответ 2

Нет, пустая строка не равна null.

Ответ 3

Они определенно не то же самое. Ваша переменная String действует как ссылка на объект в памяти, и если она установлена ​​в значение null, она не указывает ни на что. Если он задает значение пустой строки, это указывает на это.

В моем собственном кодировании я обычно устанавливаю String в "" вместо null, если у меня нет особой необходимости в null. Есть несколько библиотек, таких как Apache Commons, которые включают вспомогательные классы, такие как StringUtils, которые свернут проверку на нуль, пустую строку и даже просто пробел в один вызов: StringUtils.isBlank(), StringUtils.isNotBlank() и т.д. Довольно удобно. Или вы можете написать свои собственные вспомогательные методы, чтобы сделать подобное довольно легко.

Удачи, когда вы продвигаетесь на Java!

Ответ 4

Третья возможность:

String c;

Все три разные, конечно.

Ответ 5

Это не так глупо, как кажется. это беспокоит даже опытных программистов. во многих проектах реального мира люди часто пишут что-то вроде if(s==null || s.isEmpty()), то есть люди рассматривают null и "" как семантически эквивалентные.

Ответ 6

null означает, что он ничего не говорит, а пустая строка - это специальная строка с нулевой длиной.

Ответ 7

Строка a = null;
Строка b = "";

Первый оператор в java инициализирует переменную handle. для сохранения данных не сохраняется память.

Второй оператор показывает два объекта, первый объект - это дескриптор (b), а второй объект - "" (если мы игнорируем более высокие понятия пула строк в java, где строка изменена, а jvm выдает объединенные экземпляры строки)

Таким образом, две линии не одинаковы.

Ответ 8

Нет, они разные. Если вы используете пустую строку в методе, то возникает исключение Но не встречаются в пустой строке!