关于java引用型变量赋值

一般来说在java中赋值还是比较安全的(相对于C C++来说),

在java中将 一个对象作为参数传入一个函数中,然后给形参赋值 一般来说能成功

因为形参和实参指向的堆内存中的同一地址

刚才在集合赋值的时候出现问题 ,

List list=new arrayList();

AccountInfo ai=new AccountInfo();

for(AccountInfo temp : list)
{
        temp=ai;
}
这段代码原意是将list的每一个子项都赋值成ai。
输出结果 发现:   list的值没有发生任何变化

自己想下什么原因吧
栈变量 temp  先指向list 的某个节点
然后 又使 temp 指向 ai

这两个过程对 list 没有任何改变  就是简简单单的temp改变了一次引用的地址而已


对于引用型变量赋值 注意了  改变的只是其引用的地址

下面再看引用型变量内部非引用型数据   简单的传递引用赋值后,两个引用形变量指向同一段内存空间 所以改变list2 的值  list1的值同样改变了

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





你可能感兴趣的:(java)