84669 人が学習中
152542 人が学習中
20005 人が学習中
5487 人が学習中
7821 人が学習中
359900 人が学習中
3350 人が学習中
180660 人が学習中
48569 人が学習中
18603 人が学習中
40936 人が学習中
1549 人が学習中
1183 人が学習中
32909 人が学習中
引用JVM规范中的一段,详情参见
For every parameter declared in a method declaration, a new parameter variable is created each time that method is invoked. The new variable is initialized with the corresponding argument value from the method invocation.
规范中说每次方法调用,方法中的参数都会初始化。
上面test方法的index就是初始化了一个Integer类型的变量然后指向传入的i。后面的index = new Integer(20); 只是改变了index变量的指向,原来i的指向并没有改变。
test
index
Integer
i
index = new Integer(20);
java 中方法用到的都是值传递,即使是引用,传递的也是原来引用的一个拷贝值
方法只能让参数引用中的属性改变,而不能改变参数的引用地址
而且你可以看Integer的源码:
它包装的值value是被final修饰的,也就是只能被赋值一次,赋值后值不再改变。
另外你可以试一下别的引用类型,看看能不能被改变,比如String
引用JVM规范中的一段,详情参见
规范中说每次方法调用,方法中的参数都会初始化。
上面
test
方法的index
就是初始化了一个Integer
类型的变量然后指向传入的i
。后面的index = new Integer(20);
只是改变了index
变量的指向,原来i
的指向并没有改变。java 中方法用到的都是值传递,即使是引用,传递的也是原来引用的一个拷贝值
方法只能让参数引用中的属性改变,而不能改变参数的引用地址
而且你可以看Integer的源码:
它包装的值value是被final修饰的,也就是只能被赋值一次,赋值后值不再改变。
另外你可以试一下别的引用类型,看看能不能被改变,比如String