黑马程序员技术交流社区

标题: 参数传递问题 [打印本页]

作者: Belive丶Me    时间: 2016-5-5 22:14
标题: 参数传递问题
class Demo{
        public static void main(String[] args) {
                        int a = 10;
                        int b = 20;
                        System.out.println("a:"+a+",b:"+b);
                        change(a,b);
                        System.out.println("a:"+a+",b:"+b);
   
                               }   
                public static void change(int a,int b) {
                        System.out.println("a:"+a+",b:"+b);
                        a = b;
                        b = a + b;
                        System.out.println("a:"+a+",b:"+b);
                }        
}
运行结果为:
                a:10 b:20
                a:10 b:20
                a:20 b:40
                a:10 b:20
红色部分学生有疑惑,个人认为是还没有调用就弹栈了。
作者: Belive丶Me    时间: 2016-5-6 17:01
宝宝想说各位大手去哪了
作者: 349153256    时间: 2016-5-6 19:15
调用方法交换2个数是不行了。 这不是C++引用传递。传递进去的是数据本身。
Java对普通类型的变量是不支持引用传递的
这里只是传进去a,b值的副本,里面副本交换对原来的a,b没有任何影响

只能用数组,或者用对象传递进去修改
作者: HackSon    时间: 2016-5-6 19:46
int型为基本数据类型,参数传递时属于值传递,值传递,也就是说传入方法的参数只是原先数据的副本,跟原先数据没有关系,所以方法体中对传入参数的更改不会影响原先的数据。
作者: H_shaohui    时间: 2016-5-6 19:56
因为基本数据类型在change()方法里传的只是副本,对原来值是没影响的,即不改变原来的值。
但是如果是引用数据类型的话,因为传的是地址,change()方法里面值改变的话,引用的值也会改变




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2