public class Test {
static ArrayList list = null;
static void read(ArrayList list) {
if(list == null) {
list = new ArrayList();
}
//String s =new String("hello");
list.add("hello");
System.out.println(list.size());
}
public static void main(String[] args) {
read(list);
System.out.println(list.size());
}
}
很简单的代码,为什么会抛异常呢?
因为,你在main方法里面打印的list是全局,而你在read方法里面给list添加值hello,这个list是你在方法里面new的局部变量,而不是全局的。所以会因为全局list没有值而报空指针的错误。
引用是null;经过传参,new之后没有改变原来的引用,原来的引用还是null
传参相当于中间赋值一次
传递一个List引用,List list1 传参过程 List list2 = list1;
如果传递的是null 那么方法中再给参数new,相当于 list2 = new ..
而本身传递的 list1 没有变化
如果传递的不是null;那么对list2操作,会影响到list1,因为它们指向同一个对象