В Java эти два оператора одинаковы?
String a = null;
String b = "";
Он чувствует себя немного глупым вопросом, но в настоящее время имеет полный ментальный блок.
В Java эти два оператора одинаковы?
String a = null;
String b = "";
Он чувствует себя немного глупым вопросом, но в настоящее время имеет полный ментальный блок.
Пустая строка и 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)
Нет, пустая строка не равна null.
Они определенно не то же самое. Ваша переменная String действует как ссылка на объект в памяти, и если она установлена в значение null, она не указывает ни на что. Если он задает значение пустой строки, это указывает на это.
В моем собственном кодировании я обычно устанавливаю String в "" вместо null, если у меня нет особой необходимости в null. Есть несколько библиотек, таких как Apache Commons, которые включают вспомогательные классы, такие как StringUtils, которые свернут проверку на нуль, пустую строку и даже просто пробел в один вызов: StringUtils.isBlank(), StringUtils.isNotBlank() и т.д. Довольно удобно. Или вы можете написать свои собственные вспомогательные методы, чтобы сделать подобное довольно легко.
Удачи, когда вы продвигаетесь на Java!
Третья возможность:
String c;
Все три разные, конечно.
Это не так глупо, как кажется. это беспокоит даже опытных программистов. во многих проектах реального мира люди часто пишут что-то вроде if(s==null || s.isEmpty())
, то есть люди рассматривают null
и ""
как семантически эквивалентные.
null
означает, что он ничего не говорит, а пустая строка - это специальная строка с нулевой длиной.
Строка a = null;
Строка b = "";
Первый оператор в java инициализирует переменную handle. для сохранения данных не сохраняется память.
Второй оператор показывает два объекта, первый объект - это дескриптор (b), а второй объект - "" (если мы игнорируем более высокие понятия пула строк в java, где строка изменена, а jvm выдает объединенные экземпляры строки)
Таким образом, две линии не одинаковы.
Нет, они разные. Если вы используете пустую строку в методе, то возникает исключение Но не встречаются в пустой строке!