Java-java形参传递问题

发布于 2017-10-08 16:34:27 字数 540 浏览 1300 评论 2

public class TestTwo {
public static void main(String[] args) {
int a=123;
List<Integer> list=new ArrayList<Integer>();
addTest(list,a);
System.out.println("a="+a);
System.out.println("size="+list.size());

}

private static void addTest(List<Integer> list,int a) {

list.add(0);
list.add(1);
a=456;

}
}
输出结果
a=123
size=2

为什么?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

甜柠檬 2017-10-11 18:34:32

你只是对方法里面的a重新赋值了,相当于我这有个123,我用变量名a存着,然后调用你提供的方法,把123传给你了,然后你也用的一个变量名a保存着,然后你把你的a指向另外一个值,我这里并没有受到影响。除非你这样写

public class Test{
public static void main(String args[]){
Animal animal = new Animal();
animal.a = 123;
change(animal);
System.out.println(animal.a);
}

public static void change(Animal animal){
animal.a = 456;
}

}

想挽留 2017-10-10 09:33:51

java语言对对象采用的不是引用传递,而是值传递
java设计语言中方法参数使用的情况:
1> 一个方法不能修改一个基本数据类型的参数
2> 一个方法可以改变一个对象参数的状态,即可以改变对象参数中的某个属性
3> 一个方法不能让对象参数引用一个新的对象,即让对象参数指向新的引用

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文