由于最初的代码过于臃肿,所以上午改了下,结果却发生了空指针的情况
查找原因后发现是参数传递的问题
上网翻了资料后得出结论,java中只有值传递,下面举个例子:
class A { } class Test { public static void main (String[] args){ A a = new A(); System.out.println("main:" + a); // 输出a的初始地址 change(a); System.out.println("main:" + a); // 输出change之后a的地址 } private static void change (A a){ System.out.println("change:" + a); // 输出参数a的地址 a = new A(); System.out.println("change:" + a); // 输出参数a的地址 } }
结果是:
main:A@677327b6 change:A@677327b6 change:A@14ae5a5 main:A@677327b6
可见change中无法改变main中a对象的引用地址,因为传入的只是a对象的引用地址的值,而不是a这个引用变量本身
以上仅仅只是个人见解;