Я новичок в программировании JAVA. Я прочитал это в моей книгеоператор присваивания Строковый объект
String a="Hello";
String b="Hello";
System.out.println(a==b);
Это должно вернуть ложное как & б относятся к различным экземплярам объектов String.
Bcoz оператор присваивания сравнивает экземпляры объектов, но все же я получаю true.
Я использую Eclipse IDE.
Пример в книге идет как это:
String s = "s";
String sToo = "s";
System.out.println(a == b);
System.out.println(s == sToo);
Этот бит кода выводит «ложных» для s == Stoo. Это потому, что s и sToo являются ссылками на разные экземпляры объекта String. Таким образом, хотя они имеют одинаковое значение, они равны , не равным в глазах операторов равенства. Кроме того, s == "s" печатает false, потому что строковый литерал создает еще один экземпляр класса String.
Название книги: JAVA 7 для Absolute Beginners
Нет, значения 'a' и' b' относятся к одному и тому же объекту из-за интернирования строк. Вы уверены, что книга дает точный пример? Также обратите внимание, что оператор * присваивания * вообще не выполняет сравнения. Оператор присваивания равен '='; возможно, вы думали об операторе равенства, '=='? –
Чтобы увидеть, как он может вернуть false, попробуйте 'String a = new String (« Hello »); String b = "Hello"; ' – Flavio
Извините, действительно сделал тип. Думал о назначении оператора. Очень жаль –