Javaリファレンス変数付与について

1379 ワード

一般的にjavaに値を割り当てるのは安全です(C C++に対して)、
Javaで オブジェクトをパラメータとして関数に入力し、パラメータに値を割り当てます. 一般的には成功する
パラメータと実パラメータが指すスタックメモリの同じアドレスだから
さっき集合付与時に問題が発生しましたが、
List list=new arrayList();

AccountInfo ai=new AccountInfo();

for(AccountInfo temp : list)
{
        temp=ai;
}
このコードは、listの各サブアイテムをaiに割り当てることを意味する.
出力結果
検出:  リストの値に変化はありません
自分が何を考えているのか
スタック変数temp リストのノードを先に指す
そしてtempをaiに向けます
この2つのプロセスはlistに何の変化もありません 単純なtempが参照先を変えただけだ
参照型変数の割り当てに注意 変更されたのは参照先のアドレスだけです
次に、参照型変数の内部非参照型データを見てみましょう.  単純にリファレンス割り当てを渡すと、2つのリファレンス変数は同じメモリ領域を指すのでlist 2の値を変更します. List 1の値も同様に変更されました
package com.aaa.socketTest;

import java.util.ArrayList;
import java.util.List;

public class ListTest {
	public static void main(String[] args){
		//   list1
		List list1=new ArrayList();
		ClassA a=new ClassA(1, "aaa");
		list1.add(a);
		ClassA b=new ClassA(2, "bbb");
		list1.add(b);
		ClassA c=new ClassA(3, "ccc");
		list1.add(c);
		
		// list1   list2
		List list2=new ArrayList();
		for(int i=0;i