Home » Java Programming » Java.lang Class

What will be the output of the program? String s = "ABC"; s.toLowerCase(); s += "def"; System.out.println(s);

Correct Answer: ABCdef

Explanation:

String objects are immutable. The object s above is set to "ABC". Now ask yourself if this object is changed and if so where - remember strings are immutable.


Line 2 returns a string object but does not change the originag string object s, so after line 2 s is still "ABC".


So what's happening on line 3? Java will treat line 3 like the following:


s = new StringBuffer().append(s).append("def").toString();


This effectively creates a new String object and stores its reference in the variable s, the old String object containing "ABC" is no longer referenced by a live thread and becomes available for garbage collection.


← Previous Question Next Question→

Discussion & Comments

No comments yet. Be the first to comment!
Join Discussion