Когда вы пишете
String a = "";
Это означает, что существует переменная типа 'a' строки, которая указывает на ссылку на объект в пуле строк, которая имеет значение "".Поскольку переменная a
содержит действительную ссылку на строковый объект, здесь могут применяться все методы строки.
В то время как при написании
String b = null;
Это означаетчто существует переменная b
типа string, которая указывает на неизвестную ссылку .И любая операция с неизвестной ссылкой приведет к NullPointerException
.
Теперь давайте оценим следующие выражения.
System.out.println(a == b); // false. because a and b both points to different object reference
System.out.println(a.equals(b)); // false, because the values at object reference pointed by a and b do not match.
System.out.println(b.equals(a)); // NullPointerException, because b is pointing to unknown reference and no operation is allowed