| 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 | 
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.