
swap(x,y)是一个函数,字面意思是交换传入的两个参数的值。
函数内部会将变量x和变量y的值交换,并且打印出交换后的变量值,这里打印的是x=20,y=10
然而这样并不能真正把main函数里面定义的变量x,y的值互相交换,因为在这里传递给swap()函数的变量只是x,y的一个拷贝,然后再在函数内部对这个副本的值进行交换是不会对原来的x,y的值造成影响。
所以main函数里最后会打印出x=10,y=20
如果想要真正实现交换全部变量x,y的值,只需要把swap函数定义成static void swap(Integer x,Integer y),函数内部再对其进行交换就可以了。这里用到了Java中的包装数据类型,也称原始数据类型,用对象来接受传递过来的数据,然后对象就会指向全局变量x,y的内存地址,这个作用相当于C语言中的指针。这是让swap函数起作用的关键原理所在。
并不是所有的Java程序中都会用到这个函数,根据业务需要进行保留或删除吧。
你change方法中改变只是该方法中的 a、b
public class TestChange {
private static int a=0;
private static int b=0;
/
@param args
/
public static void main(String[] args) {
// TODO Auto-generated method stub
a=9;
b=1;
change(int a,int b);
Systemoutprintln(a);
Systemoutprintln(b);
}
public static void change()
{
int c=0;
c=a;
a=b;
b=c;
}
基本类型值的交换与C一样。比如:
int tmp = a;
a = b;
b = tmp;
引用值的交换业和上面类似,这又叫做浅拷贝。比如:
Object tmp = a;
a = b;
b = tmp;
如果要将类中的所有成员都复制,需要深拷贝。比如:
Object tmp = aclone();
a = (Object)bclone();
b = (Object)tmpclone();
这里方法clone由用户自定义。
以上就是关于java程序为什么一定要写swap(x,y)全部的内容,包括:java程序为什么一定要写swap(x,y)、在这个java程序中,我想实现两个数字的交换,但是无法实现,应该怎么改正那个change函数呢、在 Java 应用程序中如何编写一个方法来交换两个基本类型的值或两个对象引用的值呢等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)