问题描述
public class Test { static ArrayList<String> list = null; static void read(ArrayList<String> list) { if(list == null) { list = new ArrayList<String>(); } //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,因为它们指向同一个对象
时间: 2024-10-24 17:46:42