Levon Saldamli har skickat mig ett lurigt Javaprogram som innehåller den nya for-loopen som jag höjt till skyarna här. Tanken med följande program är att det ska lägga till tre punkter till varje parameter som skickats till det:
public static void main(String[] args) {
// Lägg till tre punkter i slutet av varje sträng
for(String a: args) {
a += "...";
}
// Skriv ut strängarna
for(String a: args) {
System.out.println(a);
}
}
Men utskriften visar att strängarna inte förändrats! Varför? Jo, i Java är strängar oföränderliga, det går aldrig att ändra innehållet i något strängobjekt. Operatorn += skapar ett helt ny strängobjekt som a sedan refererar till, istället för att ändra på det objekt som finns i arrayen. Därför blir det fel.