Java Programming - Java.lang Class - Discussion


What will be the output of the program?

String x = "xyz";
x.toUpperCase(); /* Line 2 */
String y = x.replace('Y', 'y');
y = y + "abc";

[A]. abcXyZ
[B]. abcxyz
[C]. xyzabc
[D]. XyZabc

Answer: Option C


Line 2 creates a new String object with the value "XYZ", but this new object is immediately lost because there is no reference to it. Line 3 creates a new String object referenced by y. This new String object has the value "xyz" because there was no "Y" in the String object referred to by x. Line 4 creates a new String object, appends "abc" to the value "xyz", and refers y to the result.

Pratik Patel said: (Dec 19, 2011)  
String x = "xyz";
String y = x.replace('Y', 'y');
y = y + "abc";
now o/p is XyZabc is it true??

Mayur said: (Dec 26, 2011)  
Ya its correct now.xyx is converted to XYZ and is overwritten in x.nexY is replaced by y and then XyZ is concatenated with abc as + orks as concatenantion operator in Java with string types

Atika said: (Jan 7, 2017)  
Why not the answer is option D?

Manoj said: (Jan 21, 2017)  
As there is no reference created after x=x.toUpperCase(); statement.
So the answer will be xyzabc.

Namitha said: (Sep 28, 2018)  
Sysout statement should display the value of y as xyz.

I feel cos y= y+ abc would be lost.

Post your comments here:

Name *:

Email   : (optional)

» Your comments will be displayed only after manual approval.