Znalazłem problem w moim Kodeksie. Pierwszy kod:Java dla pętli według wartości lub przez odniesienie
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);
}
}
}
Wyjście jest:
a
b
c
over
over
over
Przypuszczałem pierwsza pętla będzie także zastąpić ciąg w tablicy. W każdym razie wyjście będzie zakończone. Wygląda na to, że tworzy kopię wartości zamiast tworzyć odniesienie. Nigdy tego nie zauważyłem. Czy robię to źle? Czy istnieje możliwość utworzenia odwołania?
// Edycja: Wygląda na to, że wszyscy wiedzą o tym oprócz mnie. Jestem z pochodzenia w tle i nie zwracam wystarczającej uwagi na termin referencyjny, który jest bardzo odmienny od C. Na szczęście zajęło mi to tylko 10 minut, aby to zrozumieć (tym razem).
http : //stackoverflow.com/questions/40480/is-java-pass-by-reference – assylias