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 个回复

倒序浏览
  1. class Demo
  2. {
  3.         public static void main(String[] args)
  4.         {
  5.                 int x = 4;// 定义了一个变量X并初始化值为4
  6.                 show(x);// 调用show方法将X对应的值传给该方法
  7.                 System.out.println(x);// 打印变量X对应的值4
  8.         }
  9.         public static void show(int x)// 该方法没有返回值,并接受一个整数类型。
  10.         {
  11.                 x = 2;// 将引用类型的值更改为2
  12.         }
  13. }
复制代码
回复 使用道具 举报
void 表示的是无返回值;故此处就算调用了show(x)方法,x值的改变也不会返回到main()函数来,输出的依旧是4;若将public static void show (int x) 改为:public static int show (int x){ x = 2; return x;}  即可
回复 使用道具 举报
没返回值嘛
回复 使用道具 举报
可以说两个x不是同一个数,因为它们存在不同内存(栈内存--现在你先忽略栈的的存在)中。而show方法里的x在show执行完以后就被系统自动释放了,对main函数里的x没有影响。
回复 使用道具 举报
学习学习
回复 使用道具 举报
加油加油加油~
回复 使用道具 举报

谢谢版主和大家,现在明白了~~
回复 使用道具 举报
顶一个
回复 使用道具 举报
结果是4。show方法返回值是空,不会改变main方法中变量X的值的。
回复 使用道具 举报
我想楼上已近给了回答
回复 使用道具 举报
这两个是不同的变量  
回复 使用道具 举报
加油加油加油
回复 使用道具 举报
因为这是传递的值,被调用的函数执行完了之后,变量就释放了,而且没有return返回值
回复 使用道具 举报
不是返回值的问题,考的是参数传递问题。
基本数据类型在栈内存,形式参数的改变对实际参数没有影响。随着方法的结束而释放。
int x = 4;是实际参数,在show(int x)中充当形式参数,所以不管有没有返回值,对其都没影响。随着show的方法结束而结束。
引用数据类型在堆内存,形式参数的改变直接影响实际参数。因为是引用的是位置,改变的是数值。
回复 使用道具 举报
把方法中的参数改为y就好理解了
回复 使用道具 举报
show函数里面的x是函数范围内的局部变量,超出了函数范围,就会释放,虽然show方法里面给x重新赋值了,可是没有返回值,所以,函数运行结束,就已经被释放了。而主函数内的输出语句打印的是在主函数内有效的x的值,为4.
回复 使用道具 举报
楼主还没 明白 形参 和实参的概念么
回复 使用道具 举报
1,首先要明白,这两个X不是同一个变量。
2,这两个参数存放的位置在同一个地方。
回复 使用道具 举报
学习了~~~~
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 加入黑马