Ich habe ein Problem in meinem Code gefunden. Zuerst wird der Code:Java for Schleife nach Wert oder per Referenz
public class Main {
/**
* @param args
*/
public static void main(String[] args) {
String[] blablubb = { "a", "b", "c" };
for(String s : blablubb) {
s = "over";
}
printArray(blablubb);
for (int i = 0; i < blablubb.length; i++) {
blablubb[i] = "over";
}
printArray(blablubb);
}
public static void printArray(String[] arr) {
for(String s : arr) {
System.out.println(s);
}
}
}
Der Ausgang ist:
a
b
c
over
over
over
nahm ich die erste Schleife auch die Zeichenfolge in dem Array überschreiben würde. Also wäre die Ausgabe in jedem Fall vorbei. Es scheint, dass es eine Kopie des Werts erstellt, anstatt eine Referenz zu erstellen. Ich habe das nie wahrgenommen. Mache ich es falsch? Gibt es eine Option, stattdessen eine Referenz zu erstellen?
// Edit: Scheint, wie jeder darüber außer mir weiß. Ich bin von C Hintergrund und nicht genügend Aufmerksamkeit auf die Bezeichnung Bezug, die sehr unterschiedlich ist C. Glücklicherweise brauchte ich nur 10 Minuten, um dies herauszufinden (dieses Mal).
http : //stackoverflow.com/questions/40480/is-java-pass-by-reference – assylias