hi folks ! please help me out to understand this question
Code First : class StringDemo {public static void main(String ss[]) {String s= "HELLO"; s.toLowerCase(); System.out.println(s); } } its output is : HELLO
Code Second : class StringDemo {public static void main(String ss[]) {String s= "HELLO"; System.out.println(s.toLowerCase();
} } its output is : hello
why o/p is different in both cases, as we are not changing the reference to newly created string object
wise owen
Ranch Hand
Joined: Feb 02, 2006
Posts: 2023
posted
0
String Object is immutable. The "s.toLowerCase()" will return a new String object but the string referenced by s will not change. [ May 11, 2006: Message edited by: wise owen ]
System.out.println will print the returning value of the method. in this case s.toLowerCase() is returning a new String and it is being printed in the console....
plz correct if i am wrong
regards krishna bulusu
jerry sharma
Greenhorn
Joined: Mar 30, 2006
Posts: 23
posted
0
hi wise !
where the returned object by the method s.toLowerCase() in code A: goes
as in both cases references is not being cjanged
wise owen
Ranch Hand
Joined: Feb 02, 2006
Posts: 2023
posted
0
The created String Object will be lost because not variable to reference it. This is portion of code in my previous link. It show the process step by step.
Example:
String s = "XYZ"; //1. a object created
s.concat("ABC"); //now a fresh copy of XYZ created and "ABC" to it and the //reference to XYZABC returned, but it get lost //as you are not assiging reference to it. System.out.println(s); // its "XYZ"
now lets see if you write:
System.out.println(s.concat("ABC")); //it will print XYZABC but the s=XYZ
if you write: s = s.concat("ABC"); //then s=XYZABC