java中只有值传递

由于最初的代码过于臃肿,所以上午改了下,结果却发生了空指针的情况
查找原因后发现是参数传递的问题
上网翻了资料后得出结论,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这个引用变量本身

以上仅仅只是个人见解;

猜你喜欢

转载自zk-chs.iteye.com/blog/2248528