String str=new String("JAVA");
System.out.println("value of str before "+str); //JAVA
String str2=null;
str=str2;
System.out.println("value of str"+str); //null
System.out.println("value of str2"+str2);//null
str="Prog";
System.out.println("value of str"+str); //prog
System.out.println("value of str2"+str2);//null
Ques 1 Если строка неизменна, почему значение str меняется?Ссылки и объекты Java String
Student stu= new Student(123);
System.out.println("value of stu before "+stu); //some address is printed
Student stu2=null;
stu=stu2;
System.out.println("value of stu"+stu); //null
System.out.println("value of stu2"+stu2);//null
Student stu3=new Student(456);
stu=stu3;
System.out.println("value of stu"+stu); //some new address
System.out.println("value of stu2"+stu2);//null
Ques 2.String и объекта ведут себя же образом .Затем, почему строка неизменна и объект изменяемым. Где разница
Этот код Безразлично не имеет смысла и даже не будет компилироваться. – chrylis
Объекты Java String являются «неизменными» - они не могут быть изменены. Тип объекта неизменен, если его класс не содержит методов (или общедоступных полей), позволяющих его изменять. –
И как указано, ваш код выше не будет компилироваться, потому что javac не позволяет использовать локальную переменную, которая не была инициализирована. –