A good answer might be:

Line of code: OK Not OK
String line = "The Sky was like a WaterDrop" ;  X  
String a = line.toLowerCase();  X  
String b = toLowerCase( line );    X
String c = toLowerCase( "IN THE SHADOW OF A THORN");    X
String d = "Clear, Tranquil, Beautiful".toLowerCase();  X  
System.out.println( "Dark, forlorn...".toLowerCase() );  X  

Temporary Objects

The "OK" answer for the last two lines might have surprised you, but those lines are correct (although perhaps not very sensible.) Here is why:

String d     =  "Clear, Tranquil, Beautiful".toLowerCase();
                 ---------------+-----------     ---+---
   |                            |                   |
   |                            |                   |
   |             First:  a temporary String         |
   |                     object is created          |
   |                     containing these           |
   |                     these characters.          |
   |                                                |
   |                                               Next: the toLowerCase() method of
   |                                                     method ofthe temporary object 
Finally:  the reference to the second                    is called.It creates a second 
          object is assigned to the                      object, with all lower
          reference variable, d.                         case characters.

The temporary object (using the shorthand constructor unique to Strings) is used as a basis for a second object. The reference to the second object is assigned to d.

Now look at the last statement:

System.out.println( "Dark, forlorn...".toLowerCase() );

A String is constructed (using the shorthand constructor of Strings). Then a second String is constructed (by the toLowerCase() method). The second String is used a parameter for println(). Both String objects are temporary.

QUESTION 16:

Tedious review: