Здравствуйте, LearnJava, Вы писали:
LJ>Доброго Вам!
LJ>Имеется код:
LJ>LJ>public class TestConsole
LJ>{
LJ> public static void main(String[] args)
LJ> {
LJ> Foo ob = new Foo();
LJ> String str = ob.getString();
LJ> System.out.println(ob.getString());
LJ> str = "321";
LJ> System.out.println(ob.getString());
LJ> }
LJ>}
LJ>class Foo
LJ>{
LJ> public String getString()
LJ> {
LJ> return m_Str;
LJ> }
LJ> private String m_Str = "123";
LJ>}
LJ>
LJ>И соответственно вывод:
LJ>LJ>123
LJ>123
LJ>
LJ>Непонятно, почему не изменился объект Foo::m_Str? Ведь метод Foo::getString() возвращает ссылку, которой я присваиваю новую строку.
LJ>P.S.
LJ>А есть разница?
LJ>LJ>private String m_Str = "123"; //Так
LJ>private String m_Str = new String("123"); //И так
LJ>
LJ>Спасибо!
Проще обьяснить так — хотя String и является Object, он передается по значению, а не по ссылке.