Zum Wochenende mal ein kleines Quiz. Läuft der Test grün oder rot?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
import static org.junit.jupiter.api.Assertions.assertEquals; import org.junit.jupiter.api.Test; /** * Kleines Quiz am Freitag. * * @author Thomas Wenzlaff * */ class Quiz42 { private static void is42(String auswertung) { if (auswertung.startsWith("42")) { auswertung = "0815"; } else { auswertung = "4711"; } } @Test void isStart42Test() { String auswertung = "4212345"; Quiz42.is42(auswertung); assertEquals("4212345", auswertung); // Ist der Test grün oder rot? System.out.println("Das Ergebnis ist: " + auswertung); } } |
Die Lösung …
Der Wert (auswertung) wird nicht in der Methode verändert. In der Java-Programmierung erfolgt die Argumentübergabe an Methoden stets nach dem Pass-By-Value-Prinzip. Dies bedeutet, dass der Wert der Variablen als Argument übergeben wird, und Änderungen an den Parametern haben keine Auswirkungen auf die ursprünglichen Variablen außerhalb der Methode.
Aber bei Objekten wird die Referenz des Objekts als Wert übergeben (dazu mache ich dann nochmal ein Quiz), was zuweilen Verwirrung stiften kann, da Änderungen am Objekt über die Referenz in der Methode durchgeführt werden können. Ein solides Verständnis von Pass-By-Value ist entscheidend, um in der Java-Entwicklung korrekte und vorhersehbare Ergebnisse zu erzielen.