zur vorherigen Seite   zum Inhaltsverzeichnis   zur nächsten Seite

Antwort:

Praefix 1 stimmt ueberein.
Praefix 2 stimmt nicht ueberein.
Praefix 3 stimmt nicht ueberein.
Praefix 4 stimmt ueberein.

Kaskadierende Stringoperationen

Hier ist wie die letzte if-Anweisung des Programms funktioniert:

String entflammt = "Meine Liebe ist wie eine rote, rote Rose.";

. . . . . .

if ( entflammt.startsWith( "  Meine Liebe".trim() ) )
 System.out.println( "Praefix 4 stimmt ueberein." ); <-- wird ausgeführt
else
 System.out.println( "Praefix 4 stimmt nicht ueberein." );

Der String " Meine Liebe" beginnt mit zwei Leerzeichen, also stimmt er nicht mit dem Beginn des Strings, der durch entflammt referenziert wird, überein. Aber es wird seine trim() Methode aufgerufen, die einen neuen String ohne führende Leerzeichen erzeugt:

if ( entflammt.startsWith( "  Meine Liebe".trim() ) )
               -----+----     -----+-----
                    |              |
                    |              |
                    |              +------- 1.  Ein temporäres Stringobjekt
                    |                           wird erzeugt.
                    |                           Dieses temporäre Objekt
                    |                           enthält "  Meine Liebe"
                    |
                    |                       2.  Die trim() Methode des
                    |                           temporären Objekts wird aufgerufen.
                    |
                    |                       3.  Die trim() Methode gibt
                    |                           eine Referenz auf ein ZWEITES
                    |                           temporäres Stringobjekt,
                    |                           das es konstruiert hat, zurück.
                    |                           Dieses zweite temporäre
                    |                           Objekt enthält "Meine Liebe"
                    |
                    |                       4.  Die Parameterliste der
                    |                           startsWith() Methode
                    |                           hat jetzt wie gefordert
                    |                           eine Referenz auf einen String.
                    |
                    +---- 5. Die startsWith() Methode des
                             durch entflammt referenzierten Objekts
                             wird aufgerufen.

                      6. Die startsWith() Methode
                         gibt true zurück.

                      7. Der true-Zweig der if-Anweisung
                         wird ausgeführt.

Gewöhnlich denken Programmierer nicht in solcher Ausführlichkeit nach, was passiert. Üblicherweise denkt ein Programmierer: Entferne die Leerzeichen eines Strings und schaue nach, ob ein anderer damit beginnt. Aber manchmal müssen wir eine Anweisung sorgfältig analysieren um sicher zu sein, dass sie das tut, was wir wollen. Wir betrachten noch einmal die oben stehende Anweisung und überdenken sie in verschiedenen Detailstufen.

FRAGE 18:

Was macht die toLowerCase() Methode der Klasse String?