[Java] Können Sie dieses Phänomen erklären?

Testen Sie Ihre Java-Leistung.

Siehe den Code unten. Ich versuche, allen Werten in arrayList "D" zuzuweisen.

ExtentionForSample.java


ArrayList<String> arrayList = new ArrayList<>();
arrayList.add("A");
arrayList.add("B");
arrayList.add("C");
for(String str : arrayList) {
	str = "D";
	System.out.println(str);
}
System.out.println(arrayList);

Ergebnis

D
D
D
[A, B, C]

Können Sie erklären, warum dies das Ergebnis war?

Antworten

Ich habe gerade das Referenzziel der lokalen Variablen geändert. .. ..

Lassen Sie uns erklären

ローカル変数代入.png

Ich habe gerade einer lokalen Variablen einen neuen Verweis zugewiesen. Beeinflusst nicht das referenzierte "A"

Reparieren

ExtentionForSample.java


//Unterlassung
for(int i=0; i < arrayList.size(); i++) {
	arrayList.set(i, "D");
}
System.out.println(arrayList);

Verwenden Sie ArrayList.set (int index, E element)

Ergebnis

[D, D, D]

Apropos

ExtentionForSample.java


Map mapA = new HashMap<String,String>(){{put("1", "A");}};
Map mapB = new HashMap<String,String>(){{put("1", "B");}};
Map mapC = new HashMap<String,String>(){{put("1", "C");}};
arrayListMap.add(mapA);
arrayListMap.add(mapB);
arrayListMap.add(mapC);
for(Map map:arrayListMap) {
	map.put("2", "D");
}
System.out.println(arrayListMap);

Ergebnis

[{1=A, 2=D}, {1=B, 2=D}, {1=C, 2=D}]

ローカル変数代入_map.png

Zusammenfassung

Wenn Daten für das der lokalen Variablen zugewiesene Referenzziel bearbeitet werden, werden sie im Referenzziel wiedergegeben.

Recommended Posts

[Java] Können Sie dieses Phänomen erklären?
Kannst du es machen? Java EE
[Gute Nachrichten] Sie können immer noch mit Java 8 gehen !!
[JavaScript] Java-Programmierer! Sie können das Schließen von JavaScript sehr leicht verstehen!
Erläutern Sie Java 8-Lambda-Ausdrücke
Dies ist in Ordnung. WebSocket: Server = Java, Client = Java, JavaScript
[# 3 Java] Lesen Sie dies, wenn Sie Java lernen möchten! ~ Sorgfältig ausgewählt ~
[Ruby-Verständnisprüfung] Können Sie erklären, was passiert? && und und
Java-Geschichte in dieser Welt
Java-Thread sicher für Sie