java如何实现2个数之间互换

Python010

java如何实现2个数之间互换,第1张

利用异或(a^b)^b 等于a,进行交互,不需要设置临时变量也不会超范围。代码如下:

import java.util.Scanner

public class woo {

public static void main(String args[]) {

Scanner scan =new Scanner(System.in)

System.out.println("输入两个数a, b")

int a = scan.nextByte()

int b = scan.nextByte()

System.out.printf("交换前:a = %d, b = %d\n", a, b)

a = a^b

b = a^b

a = a^b

System.out.printf("交换后:a = %d, b = %d", a, b)

}

}

扩展资料

值传递就是在方法调用的时候,实参是将自己的一份拷贝赋给形参,在方法内,对该参数值的修改不影响原来实参。

引用传递是在方法调用的时候,实参将自己的地址传递给形参,此时方法内对该参数值的改变,就是对该实参的实际操作。

在java中只有一种传递方式,那就是值传递.可能比较让人迷惑的就是java中的对象传递时,对形参的改变依然会意向到该对象的内容。

参考资料:

百度百科——参数传递

Java 方法的参数是简单类型的时候,是按值传递的 (pass by value),所以Java里面不能实现和C中一样的swap方法来交换两个数的值。非要用的话只能这样写:

 //交换数组data中的第a和第b个元素

 public static void swap(int[] data, int a, int b) {

        int t = data[a]

        data[a] = data[b]

        data[b] = t

    }

估计不是你想要的效果。

     关于Java中参数和引用的问题建议看看下面的博文:

http://blog.csdn.net/zw_2011/article/details/6431448

基本类型无法按引用传递,详见『ヤ搁[浅灬メ』的解释,我只提供一种实现方案,一定要用函数调用来实现的话,可以传个数组过去

import java.io.*

public class Compare

{

public static void change(int[] a) throws Exception

{

int temp=0

temp=a[0]a[0]=a[1]a[1]=temp

}

public static void main(String args[]) throws Exception

{

int[] a = new int[2]

System.out.println("输入a:")

InputStreamReader inreader=new InputStreamReader(System.in)

BufferedReader breader=new BufferedReader(inreader)

a[0]=Integer.parseInt(breader.readLine())

System.out.println("输入b:")

a[1]=Integer.parseInt(breader.readLine())

System.out.println("交换前a="+a[0]+" 交换前b="+a[1])

change(a)

System.out.println("交换后a="+a[0]+" 交换后b="+a[1])

}

}