java代码怎么交换数值 java异或交换数值-成都创新互联网站建设

关于创新互联

多方位宣传企业产品与服务 突出企业形象

公司简介 公司的服务 荣誉资质 新闻动态 联系我们

java代码怎么交换数值 java异或交换数值

如何用java实现两个变量值的互换

可以利用以下方式:通过异或实现(异或符号为^)关于^:异或的运算法则,相当于不带进位的二进制加法。二进制下用1表示真,0表示假,则异或的运算法则为:0异或0=0,1异或0=1,0异或1=1,1异或1=0(同为0,异为1),这些法则与加法是相同的,只是不带进位。第一个数 符号 第二个数 结果0 ^ 0 00 ^ 1 11 ^ 0 11 ^ 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.此方法同样实现了两个数互换。

创新互联建站IDC提供业务:成都服务器托管,成都服务器租用,成都服务器托管,重庆服务器租用等四川省内主机托管与主机租用业务;数据中心含:双线机房,BGP机房,电信机房,移动机房,联通机房。

Java 交换两个数的方法,不要直接写在main方法里的,是单独的方法。

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中参数和引用的问题建议看看下面的博文:

交换两个数的值(用JAVA编写)

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

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]);

}

}

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

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

关于^:

异或的运算法则,相当于不带进位的二进制加法。二进制下用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.

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

java 交换值

1、对于原始数据类型,也就是int、 long、char之类的类型,是传值的,如果你在方法中修改了值,方法调用结束后,那个变量的值没用改变。

2、对于对象类型,也就是Object的子类,如果你在方法中修改了它的成员的值,那个修改是生效的,方法调用结束后,它的成员是新的值,但是如果你把它指向一个其它的对象,方法调用结束后,原来对它的引用并没用指向新的对象。

因此在change方法中交换x,y是成功的,但是不会影响到static x ,y的值,在change方法中输出是可以得到交换成功的x,y,因为它们都是基本类型。可以通过一个int[]的返回值来得到交换后的数值。

简单点说

1、基本类型作为参数传递时,是传递值的拷贝,无论你怎么改变这个拷贝,原值是不会改变的

2、在Java中对象作为参数传递时,是把对象在内存中的地址拷贝了一份传给了参数。

java!输入两个数并交换!谢谢!

public static void main(String[] args) {

//定义输入对象s

Scanner s=new Scanner(System.in);

System.out.print("输入第一个数的值:\t");

int number1=s.nextInt();

System.out.print("\n输入第二个数的值:\t");

int number2=s.nextInt();

System.out.println("number1的值:"+number1+"\t\t number2的值:"+number2);//输出交换前内容

//定义中间变量temp进行交换(你小学老师问你:现在有红墨水1瓶、蓝墨水1瓶,要你将红、蓝两种墨水交换瓶子,你是不是要找个空瓶子来处理)

int temp=number1;

number1=number2;

number2=temp;

System.out.println("number1的值:"+number1+"\t\t number2的值:"+number2);//输出交后内容

}


文章题目:java代码怎么交换数值 java异或交换数值
文章URL:http://kswsj.cn/article/docpegs.html

其他资讯