解决方案 »

  1.   

    list.add(new ArrayList());
    ArrayList list1=(ArrayList) list.get(1);
    因为你把new ArrayList()赋给list1了。
      

  2.   

    It does not have to allocate a node object for each element in the ListArrayList 的元素类型默认是不限定的这意味着,任何类型的对象都可以作为 ArrayList 的元素那么,问题解决了
      

  3.   

    首先需要明确的是Arraylist里面存的是什么??Arraylist里面存放的都是基本对象类型Object,
    也就是说从Arraylist里面取元素的时候我们并不知道元素的类型(String或者Arraylist)。
    当我们需要从Arraylist里面获取元素的时候我们必须知道这个元素在没有放到Arraylist里面之前的类型,然后将该元素强制转化为此类型:
    ArrayList list1=(ArrayList) list.get(1);
    String ssss=(String) list.get(0);
    为什么第一个强制转化为Arraylist,第二个强制转化为String??废话,在放到Arraylist之前,第一个元素的类型就是Arraylist,去出来的时候当然应该强制转化为Arraylist。
    我们做一个假设,一个Arraylist对象,放到Arraylist当中,作为其中的一个元素,取出来的时候,强制将这个元素转化成String类型,这样还有什么后果???还是废话,肯定出错!!
    所以用Arraylist的时候,最关键的是放进Arraylist的元素原本是什么类型,取出来的时候一定要记得将元素强制转化为这个类型,否则Arraylist是没办法用的
      

  4.   

    哥哥们,你们能审队题吗?
    list.get(0)赋值给String ssss后,对ssss操作不影响list.get(0);
    而把list.get(1)赋值给list1后,在list1中添加了两个元素此时取list.get(1)时能取到这两个元素,这说明list.get(1)被修改了。
    同样赋值,String 未 修改,arraylist修改了。
    我想的是string 只赋了值,arraylist却赋了地址,
    那么问题就来了,java中的“=”赋值的原理是什么。
    如果class a{
    String a;
    String[] aa;
    }
    那赋值是什么,难道a是赋值,aa是赋的地址吗
      

  5.   

    大家都审错题,就是你自己的问题了,如果4#的话贴到1#的话就不会有人审错了。
    java中的"="可以理解为值传递,等号右边的值传给左边,只不过对象传的是地址这个值,基本类型传的是数值。
    你问这个问题是因为你没搞清String是特殊对象,不存在什么string只赋了值这种事,"abc"在java中不是一个值,而是一个隐式的字符串对象,所以才可以调用"abc".toString()这种方法。
    此外,java中String不是存在堆内,而是string pool中,其本身是不可变对象,所以你当然不能改变它。
      

  6.   

    其实楼主可以去看看java编程思想的第三章赋值相关的说明,基本类型和类类型赋值
      

  7.   

    list.get(0)中一直是"aaaa"字符串,赋给ssss的值,ssss自己指向新的对象,但是list,get(0)仍然指向原来字符串.
    list.get(1)一直存储ArrayList对象,只要这个对象内容改变,它访问这个对象获得的内容也跟着改变.
      

  8.   

    这里问的大概就是字符串为什么没有变,因为字符串是final类,比较特殊,具体的应该可以从楼上的一些回答找到答案。
      

  9.   

    不好意思,解释不到位
    关于集合:
    如果是普通对象,则存引用
    如果是基础数据类型,则存值
    字符串属于特殊的引用类型,有它自己的常量池,创建出的字符串会存在常量池中,是无法修改的则:
    1>.list.add("aaaa");//list.get(0)指向aaaa的常量池地址
    2>.String ssss=(String) list.get(0);//ssss指向aaaa的常量池地址
    3>.ssss="121weq";//ssss修改为指向121weq的常量池地址所以list存的始终是常量池地址,是不受ssss影响的那么即使将步骤改为2,1,3,.list.add("aaaa");改为list.add(ssss);,list存的依然是常量池地址,同样不受ssss影响
      

  10.   

    你有一个篮子,你往篮子里放了玉米和一个书包,书包里又有苹果和桔子,默认存放是有顺序的,
    好,当list.get(0)时,得到的是玉米。当list.get(1)的时候就应该是个书包,书包又看做是一个集合。又能从里面
    一次拿出苹果核桔子。