如何在Java中实现交换两个变量值的方法

Python015

如何在Java中实现交换两个变量值的方法,第1张

通过异或实现(异或符号为^)

关于^:

异或的运算法则,相当于不带进位的二进制加法。二进制下用1表示真,0表示假,则异或的运算法则为:0异或0=0,1异或0=1,0异或1=1,1异或1=0(同为0,异为1),这些法则与加法是相同的,只是不带进位。

第一个数     符号     第二个数     结果

0     ^     0     0

0     ^     1     1

1     ^     0     1

1     ^     1     0

如:

num1 = 5,对应的二进制为(101)num2 = 7,对应的二进制为(111)

num1=num1^num2=2即二的平方位1^1=0,二的一次方位0^1=1,二的0次方位1^1=0得到(010)即为2。

num2 = num1 ^ num2=5 相当于num2=num1^num2^num2二的平方位1^1^1=1(此处无论num2的二的平方位是0还是1,异或运算后都为0,故得到的肯定与原num1的二的平方位相同,同理其他位置全部也都是原num1的数);二的一次方位0^1^1=0二的0次方位1^1^1=1.;得到(101)即为5.

num1 = num1^num2=7相当于num1 = num1^num2^num1^num2^num2=num2=7.

方法同样实现了两个数互换。

在main 方法内是 a=2, b=3, 这是没错的吧

你在main方法里面调用了swap方法,只是把a,b作为参数传进去,进入swap方法时,这里的a,b并不是原来main方法的a和b,它们一离开swap方法的作用范围时,已经不复存在。

所以,你在swap方法内将他们的值交换时,他们还在swap方法内,打印出来的结果自然是换了的。

但调用完swap方法以后,这个方法里面的a,b就没了。之后,在main方法里面打印的a,b就只是在main方法中声明的a,b, 和是否调用了swap无关。

以上~

首先两个数组的长度要一样交换才有意义,循环遍历数组

int

temp

//数组是什么类型temp就定义什么类型

for(int

i=0

i<ary1.length

i++){

temp

=

ary1[i]

ary1[i]

=

ary2[i]

ary2[i]

=

temp

}