请求各位大哥大姐帮我讲解一下这两段代码的区别???

来源:百度知道 编辑:UC知道 时间:2024/06/23 09:19:26
class Change
{
public static void change(int x,int y)
{
x=x+y;
y=x-y;
x=x-y;
}
public static void main(String[] args)
{
int x=3;
int y=4;
change(3,4);
System.out.println("x="+x+","+"y="+y);
}
}
//这段代码打印的结果:x=3;y=4;

class Change.
{
public static void main(String[] args)
{
int x=3;
int y=4;

x=x+y;
y=x-y;
x=x-y;

System.out.println("x="+x+","+"y="+y);
}

}
//这段代码打印的结果:x=4;y=3;

第一段代码,是建立了一个change过程,通过过程实现指定功能
但是问题是,既然你已经给X和Y赋值了,为什么还用change(3,4)呢?应该改成change(x,y),这样X和Y的值才能传回主程序!!!
第二段代码,不使用函数,虽然程序没有什么问题,但是如果是经常需要用到相同的功能!显然这种办法不太现实!!!!

还有,你的2个数值交换写的不太规范,不便于后期维护!!

class Change
{
public static void change(int x,int y)
{
int z
z=y;
y=x;
x=z;
}
public static void main(String[] args)
{
int x=3;
int y=4;
change(x,y);
System.out.println("x="+x+","+"y="+y);
}
}

当然有区别了,两个类实现过程不同啊.第一个是调用函数,参数付值然后输出来.而后面一个是定义了参数类别及值.看不出来嘛,前一个更具有灵活性.

对了,前一个声明了两变量是在main()内部,故影响到了其输出的值,change函数只是付给了两个已知的参数3,4.即输出的值即x,y.而后一个就不同了,顺序操作,影响到了输出

x=x+y;
y=x-y;
x=x-y;

System.out.println("x="+x+","+"y="+y);
这语句不就是交换x,y的值嘛,能看出来吧

两段代码都是交换x,y的值,区别在于第一段代码中main()函数调用change(3,4); 在change()函数中x,y的值交换了,但在main()函数中变量的值没有改变;第二段代码中属于同一个函数,当然就能交换了。
PS:如果想通过函数