Java tostring
Автор G задал вопрос в разделе Java
помогиет с методом toString класса object. Совсем не пойму его смысл и зачем его вообще использовать... и получил лучший ответ
Ответ от -Egor-[гуру]
Суть в том что для System.out.println() - не обязательно делать toString() : то есть можно сделать просто : System.out.println(b1); В первом случае выводится имя объекта с его пакетной иерархией и хэш-код этого объекта.
Для чего это нужно - чтобы любой утилитарный метод не зная твоего нового созданного обьекта мог получить его строковое представление : например Integer.toString() - вернет число сконверченное в строку
-Egor-
Мыслитель
(6058)
Не совсем, например если ты генерируешь JSON и попытаешся туда запихнуть свой собственный объект то он у него спросит toString(); По похожему принципу работают некоторые базы данных;
На счет String a = "abc"; и String b = new String("abc") - да есть нюансы :
a == "abc"; // true
b == "abc"; // false
При неявном создании строки она помещается в кэш и поэтому получаются одинаковые ссылки... Вот
*В дополнение к ответу выше*
Так же это сделано из-за безопасности. Ибо выводить можно только строки, без метода toString при попытке вывода объекта на экран вылетала бы ошибка, а так у каждого объекта всегда есть метод, преобразующий объект в строку (в какой-то степени) и вызывается он автоматически
И чтобы он не выводил кучу непонятной фигни типа "bookstore.Book@4aa298b7", его стоит переопределить и заставить его выводить что вам захочется :3