Praefix 1 stimmt ueberein. Praefix 2 stimmt nicht ueberein. Praefix 3 stimmt nicht ueberein. Praefix 4 stimmt ueberein.
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.
Was macht die toLowerCase()
Methode der Klasse String
?