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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

class Demo
{
        public static void main(String[] args)
        {
                int x = 4;
                show(x);
                System.out.println(x);
        }
        public static void show(int x)
        {
                x = 2;
        }
}
结果可否详细说明一下
!谢谢

24 个回复

正序浏览
sisel 中级黑马 2015-4-10 22:02:24
25#
由于int是值类型 拷贝传递,所以方法中的x=2并不能影响main中 的x的值
回复 使用道具 举报
学习学习
回复 使用道具 举报
show(x);这一个方法调用代码,知识x=4的值赋值给了show方法里面的变量x而已,这两个x并不是同一个变量,作用域都不一样,虽然把x赋值为2,也只是改变了show函数中参数x的值(记住基本数据类型的参数类型传参是值传递,两个变量不是指向内存中同一地址块)
回复 使用道具 举报
本帖最后由 wkz_crystal 于 2015-4-10 14:41 编辑

哥们儿:给你一句话,自己分析就能解决了:局部变量真是作用于函数或者语句中,它存在栈内存中,随着函数或者语句的结束而over,当over时,自然会被释放空间!所以你觉得show方法中的x还存在吗,有意义吗?
回复 使用道具 举报
基本数据类型形参值的改变不会影响实参的值。如果想要改变实参的值就要将运算之后的值再赋给实参才行。
回复 使用道具 举报
学习了~~~~
回复 使用道具 举报
1,首先要明白,这两个X不是同一个变量。
2,这两个参数存放的位置在同一个地方。
回复 使用道具 举报
楼主还没 明白 形参 和实参的概念么
回复 使用道具 举报
show函数里面的x是函数范围内的局部变量,超出了函数范围,就会释放,虽然show方法里面给x重新赋值了,可是没有返回值,所以,函数运行结束,就已经被释放了。而主函数内的输出语句打印的是在主函数内有效的x的值,为4.
回复 使用道具 举报
把方法中的参数改为y就好理解了
回复 使用道具 举报
不是返回值的问题,考的是参数传递问题。
基本数据类型在栈内存,形式参数的改变对实际参数没有影响。随着方法的结束而释放。
int x = 4;是实际参数,在show(int x)中充当形式参数,所以不管有没有返回值,对其都没影响。随着show的方法结束而结束。
引用数据类型在堆内存,形式参数的改变直接影响实际参数。因为是引用的是位置,改变的是数值。
回复 使用道具 举报
因为这是传递的值,被调用的函数执行完了之后,变量就释放了,而且没有return返回值
回复 使用道具 举报
加油加油加油
回复 使用道具 举报
这两个是不同的变量  
回复 使用道具 举报
我想楼上已近给了回答
回复 使用道具 举报
结果是4。show方法返回值是空,不会改变main方法中变量X的值的。
回复 使用道具 举报
顶一个
回复 使用道具 举报

谢谢版主和大家,现在明白了~~
回复 使用道具 举报
加油加油加油~
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 加入黑马