Я новичок в программировании на JAVA. Я прочитал это в своей книге
String a="Hello";
String b="Hello";
System.out.println(a==b);
Это должно вернуть false, поскольку a и b относятся к разным экземплярам объектов String.
Потому что оператор присваивания сравнивает экземпляры объектов, но тем не менее я получаю true.
Я использую Eclipse IDE.
Пример в книге выглядит следующим образом:
String s = "s";
String sToo = "s";
System.out.println(a == b);
System.out.println(s == sToo);
Этот фрагмент кода выводит «false» для s == sToo. Это потому, что s и sToo являются ссылками на разные экземпляры объекта String. Таким образом, несмотря на то, что они имеют одинаковое значение, они не равны в глазах операторов равенства. Кроме того, s == «s» выводит false, потому что строковый литерал создает еще один экземпляр класса String.
Название книги: JAVA 7 для начинающих.
a
иb
относятся к одному и тому же объекту из-за интернирования строк. Вы уверены, что в книге приводится точный пример? Также обратите внимание, что оператор присваивания вообще не выполняет сравнение. Оператор присваивания —=
; возможно, вы имели в виду оператор равенства==
? - person Jon Skeet   schedule 06.10.2013String a=new String("Hello"); String b = "Hello";
- person Flavio   schedule 06.10.2013