import java.util.*;
public class UsingAsList{
    private static final String colors[]={"red", "white","blue","blue"};
    private List list;
    public UsingAsList(){
    list=Arrays.asList(colors);
    System.out.println("ArrayList:"+list);        for (int i=0;i<colors.length;i++){
         System.out.println("colors[] are "+colors[i]+"");
}
System.out.println("ArrayList:"+list);     list.set(1,"addnewelement");
     System.out.println("ArrayList:"+list);
for (int i=0;i<colors.length;i++){
System.out.println("colors[] are "+colors[i]+"");
}     }    public static void main(String args[]){
UsingAsList setTest=new UsingAsList();
System.out.println("last ArrayList:"+setTest.list);
}
}
import java.util.*;
public class UsingAsListE2{
    private static final String colors[]={"red", "white","blue","blue"};
    private List list;
    public UsingAsListE2(){
    List list =new ArrayList(Arrays.asList(colors));
    System.out.println("ArrayList:"+list);        for (int i=0;i<colors.length;i++){
         System.out.println("colors[] are "+colors[i]+"");
}
System.out.println("ArrayList:"+list);     list.set(1,"addnewelement");
     System.out.println("ArrayList:"+list);
for (int i=0;i<colors.length;i++){
System.out.println("colors[] are "+colors[i]+"");
}     }    public static void main(String args[]){
UsingAsListE2 setTest=new UsingAsListE2();
System.out.println("last ArrayList:"+setTest.list);
}
}
//这个为啥又不变了呢?

解决方案 »

  1.   

    List list =new ArrayList(Arrays.asList(colors));    
     private List list;
     list=Arrays.asList(colors);
    这就是区别所在,去看一下他是在内存中怎么分布的,你就能明白!!!!!!!!!!!!
      

  2.   

    h还有就是两个main方法中一个打印null 一个打印出list why??
      

  3.   

    h还有就是两个main方法中一个打印null 一个打印出list why??
      

  4.   

    final int a;
    final int a[];
    a不可以再改变
    后面这句指指向a数组的yin用是final的,这个引用指向了一个地址,这个地址的内容是可以改变的!
    例:
    class abc{
      public int c;
    }
    abc a = new abc();
    final abc b = a;
    a.c =3;
    这个时候a.c也不再是零而是3了
      

  5.   

    里面还有细节问题,第2次的System.out.println("last ArrayList:"+setTest.list);将打印null。因为定义了一个局部变量List list =new ArrayList(Arrays.asList(colors));
    换成list =new ArrayList(Arrays.asList(colors));才能打印值