黑马程序员技术交流社区
标题:
大家帮我看下下面代码
[打印本页]
作者:
damofeixue
时间:
2015-10-30 13:24
标题:
大家帮我看下下面代码
主函数调用change方法后,下面输出语句为什么打印出来还是a=10,b=20呀,那那种情况change调用后值会改变呢?
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);
int[] arr = {1,2,3,4,5};
change(arr);
System.out.println(arr[1]);
}
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);
}
public static void change(int[] arr)
{
for(int x=0; x<arr.length; x++)
{
if(arr[x]%2==0)
{
arr[x]*=2;
}
}
}
}
作者:
young_ants
时间:
2015-10-30 19:45
class Test {
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);
int[] arr = {1,2,3,4,5};
change(arr);
System.out.println(arr[1]);
}
public static void change(int a,int b)
{
System.out.println("a:"+a+",b:"+b);
a = a ^ b;
b = a ^ b;
a = a ^ b;
System.out.println("a:"+a+",b:"+b);
}
public static void change(int[] arr)
{
for(int x=0; x<arr.length; x++)
{
if(x%2==0)
{
x *=2;
}
}
}
}
复制代码
哥们,你的代码太乱,没有任何注释,不知道这段代码要干什么,只能改到你两个数的交换,无法了解你方法重载后,对数组要实现什么功能????
作者:
zhangyibo
时间:
2015-10-30 20:22
主函数执行第一个print a=10,b=20
然后调用change方法,打印a=10,b=20
执行代码后打印a=20,b=40
函数调用结束,但是没有return,所以a和b得值在内存中被释放。
函数调用结束,打印a=10,b=20
以上就是你第一次调用change时的4次打印结果
作者:
zhangyibo
时间:
2015-10-30 20:23
没注意你把主函数里的打印注释了,刚才的答案第一个和最后一个没有,其他的有
作者:
zhangyibo
时间:
2015-10-30 20:25
就是你要是想调用函数改变主函数里的值,就得在函数上加返回值类型并且写return语句
作者:
damofeixue
时间:
2015-10-31 12:36
谢谢大家,我的问题解决了
作者:
damofeixue
时间:
2015-10-31 12:37
young_ants 发表于 2015-10-30 19:45
哥们,你的代码太乱,没有任何注释,不知道这段代码要干什么,只能改到你两个数的交换,无法了解你方法重载后 ...
不好意思,下次写规范点
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2