aspose file tools*
The moose likes Programmer Certification (SCJP/OCPJP) and the fly likes Why strange output of this String question Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login
JavaRanch » Java Forums » Certification » Programmer Certification (SCJP/OCPJP)
Bookmark "Why strange output of this String question" Watch "Why strange output of this String question" New topic
Author

Why strange output of this String question

jerry sharma
Greenhorn

Joined: Mar 30, 2006
Posts: 23
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
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 ]
wise owen
Ranch Hand

Joined: Feb 02, 2006
Posts: 2023
Read this thread for more detail.
Krishna Bulusu
Ranch Hand

Joined: Jan 27, 2006
Posts: 32
hi,

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
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
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
Amit Batra
Ranch Hand

Joined: Mar 04, 2006
Posts: 361
Yup,what u need to do is this:
s=s.toLowerCase();
 
It is sorta covered in the JavaRanch Style Guide.
 
subject: Why strange output of this String question
 
Similar Threads
null pointer exception
StringCode
Problem with output
Strange issue for instance variable.
String splitting