A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© xueshuyang 中级黑马   /  2015-11-16 23:25  /  755 人查看  /  13 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

class Demo01 {
        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) {
                a = b;
                b+=a;
                System.out.println("a="+a+"b="+b);
        }
}

13 个回复

倒序浏览
a=10 b=20
a=20 b=40
回复 使用道具 举报
jlq 中级黑马 2015-11-16 23:45:30
藤椅
looklook  zhichi yixia
回复 使用道具 举报
考察实参与形参
回复 使用道具 举报
整个输出结果是:
a=10b=20
a=20b=40
a=10b=20
对吧
回复 使用道具 举报
我是来看答案的
回复 使用道具 举报
尝试中……
回复 使用道具 举报
本帖最后由 xiao15779706 于 2015-11-17 09:03 编辑
黑夜中那颗星 发表于 2015-11-17 00:36
整个输出结果是:
a=10b=20
a=20b=40

为什么 第三个也是10.20  是不是因为数据存放在方法区中  而第二个change()方法对其操作并不在方法区中操作的  在栈中操作的??
回复 使用道具 举报
ln0491 中级黑马 2015-11-17 11:31:55
9#
10,20.。。。。。。。。。。。。。
回复 使用道具 举报
a=10b=20
a=20b=40
a=10b=20
回复 使用道具 举报
xiao15779706 发表于 2015-11-17 08:51
为什么 第三个也是10.20  是不是因为数据存放在方法区中  而第二个change()方法对其操作并不在方法区中操 ...

   public static void main(String[] args) {
                int a = 10;
                int b = 20;
                System.out.println("a="+a+"b="+b);
                change (a,b);   //这里只是把a和b的值传递给这个方法
                System.out.println("a="+a+"b="+b);
        }
        public static void change(int a,int b) {  
                a = b;  //这里改变的是本方法中的局部变量a,并不改变上面的
                b+=a; //这里也是一样
                System.out.println("a="+a+"b="+b);
        }
回复 使用道具 举报
黑夜中那颗星 发表于 2015-11-17 11:46
public static void main(String[] args) {
                int a = 10;
                int b = 20 ...

我明白了,也就是说change方法中的a,b只是接收到的参数,和主函数中的a,b不一样,change中的a,b作用域也就仅限于方法中是吧  谢谢你
回复 使用道具 举报
a=10 b=20
a=20 b=40
a=10 b=20
基本类型的数据传递,不会影响实际参数的值
引用数据类型的传递,会影响实际参数的值,String例外  可以当作基本数据类型去看
回复 使用道具 举报

a=10b=20
a=20b=40
a=10b=20
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马