import java.util.ArrayList;
import java.util.List;public class TTT { public void test1() {
List list = new ArrayList();
test2(list);
System.out.println(list.size()); // 1处
test3(list);
System.out.println(list.size()); // 2处
for (int i = 0; i < list.size(); i++) {
System.out.println(list.get(i)); // 2处
}
} public void test2(List list) {
list.add("111");
list = null;
} public void test3(List list) {
list.add("aaaa");
list = null;
} public static void main(String s[]) {
TTT tc = new TTT();
tc.test1();
}
}
////////////////////////////////////////////////
输出
1
2
111
aaaa有点晕,没想明白,那位帮忙解释一下. Thanks

解决方案 »

  1.   

    list = null 和list.clean()应该不是一回事
      

  2.   

    而且list是已经new 了的一个List
      

  3.   

    我给你详细解释一下吧!
    List接口反映了一个有序集合的特性.
    size()返回列表对象中元素的数量.
    get()返回列表对象中指定位置的元素.
    System.out.println(list.size()); // 1处
    此句显示1.在前一句调用test2(list);方法.此处向list中添加一个值
    所以显示1
    System.out.println(list.size()); // 2处
    此句显示2. 因为test3(list);方法.此处向list中又添加一个值
    所以显示2
    for (int i = 0; i < list.size(); i++) {
    这句话是一个特循环2次
    System.out.println(list.get(i)); // 2处
    显示位置1 和位置2的值
    所以显示 111 
             aaaa
      

  4.   

    总之  null不能清空数组
    先这么记吧
      

  5.   

    我看楼主是老湖涂了,呵呵
    你忘了java里所有的传值都是按值传递
    楼主一定知道
    public void add(int i){
       i = 10;
    }
    在调用这个add的前后,i的值是不变的,那么list 因为是引用类型,它指向的object refenrence 在调用前
    后也不被改,楼主明白了否
      

  6.   

    //注意:TTT.java 使用了未经检查或不安全的操作。
    //注意:要了解详细信息,请使用 -Xlint:unchecked 重新编译
    >javac -Xlint TTT.java
    TTT.java:18 警告:[unchecked]对作为普通类型java.util.List的成员的add(E)的调用未经检查
                             list.add("111");
                                     ^ 
    TTT.java:23 警告:[unchecked]对作为普通类型java.util.List的成员的add(E)的调用未经检查
                             list.add("aaaa");
    2 警告
      

  7.   

    public void test2(List list) {
    list.add("111");
    list = null;   //你将参数list置null不影响test1中的list
    } public void test3(List list) {
    list.add("aaaa");
    list = null;  ////你将参数list置null不影响test1中的list
    }
      

  8.   

    List list = new ArrayList();//list引用了一个ArrayList对象
            test2(list);//按值传list的
    -----------------------------
    public void test2(List list) {//list引用ArrayList
    list.add("111"); //list引用的ArrayList对象调用add();
    list = null;     //list引用用变为null;
    }
      

  9.   

    楼主可以用个有DEBUG的IDE来TRACE一下,这样就可以加深理解了,毕竟自己理解的才是自己的~~^_^