当前位置: 代码迷 >> J2SE >> 一个简单的java有关问题 先后的赋值有关问题
  详细解决方案

一个简单的java有关问题 先后的赋值有关问题

热度:230   发布时间:2016-04-23 20:17:09.0
一个简单的java问题 先后的赋值问题
import java.util.*;

public class TestListAdd {
   public static void main(String[] args) {
   List list = new ArrayList();
   List list1 = new ArrayList();
   list.add(list1);
   list1.add("a");
   System.out.println(list);
   int b=0;
   int a=b;
   b=8;
   System.out.println(a);
   
}
}


得到的结果是:
[[a]]
0



求大神给解释   全部家当已奉上
------解决思路----------------------
将 System.out.println(list); 
修改为 System.out.println(list1 + " " + list); 看的会清晰一些
[a] [[a]]
list1 包含一个元素 a,打印结果为[a],
list 包含一个元素list1,打印结果就是[[a]] 了。
list的父类AbstractCollection重写了toString方法,让list的元素打印出来为[ ] 包括的。

public String toString() {
        Iterator<E> it = iterator();
        if (! it.hasNext())
            return "[]";

        StringBuilder sb = new StringBuilder();
        sb.append('[');
        for (;;) {
            E e = it.next();
            sb.append(e == this ? "(this Collection)" : e);
            if (! it.hasNext())
                return sb.append(']').toString();
            sb.append(',').append(' ');
        }
    }

------解决思路----------------------
List 是引用类型,引用类型的赋值只是地址的赋值,这点跟基本类型不一样。