「java多次交换」java两个数交换

博主:adminadmin 2022-12-07 15:30:08 70

本篇文章给大家谈谈java多次交换,以及java两个数交换对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

JAVA二维数组循环交换

数组溢出了,把3全改成2。因为你定义的a和b都只有4个元素;a[0][0],a[0][1] ,a[1][0],a[1][1]而for循环中给a[2][0],a[2][2]等等对象赋值时候,那些对象是不存在的 public class Test { public static void main(String[] args){

String[][] a = new String[][]{{"1","2"},{"3","4"}};

String[][] b = new String[][]{{"5","6"},{"7","8"}};

for(int i=0;i2;i++){

for(int j=0;j2;j++){

System.out.print(a[i][j]+" ");

}

}

for(int i=0;i2;i++){

for(int j=0;j2;j++){

a[i][j] = b[i][j];

}

}

for(int i=0;i2;i++){

for(int j=0;j2;j++){

System.out.print(a[i][j]+" ");

}

}

}

}

java怎么实现两个对象内容的交换

1.借助中间量交换

int x = 10;

int y = 20;

int temp = x;

x = y;

y = temp;

此种方法可以将中间量看成空杯,即把temp看成是空杯,

把x看成是装有白酒的杯子,把y看成是装有红酒的杯子

int temp = x; 把白酒倒到空杯中,此时temp装有白酒,x变成空杯

x = y; 把y中的红酒倒到x空杯中,此时x装有红酒,y变成空杯

y = temp; 把白酒倒到y空杯中,此时x装有红酒,y装有白酒,实现x和y的互换

2.数值相加减交换

int x = 10;

int y = 20;

x = x + y;

y = x - y;

x = x - y;

此种方法通过先求得两数的和再进行减运算

x = x + y; 此时x的值为10+20=30;

y = x - y; 此时的x经上面的运算变成30,所以y = 30 - 20 = 10;

x = x - y; 此时的y经上面的运算变成10,所以x = 30 - 10 = 20;实现两个数的互换

3.位移运算交换

int x = 10;

int y = 20;

x = x ^ y;

y = x ^ y;

x = x ^ y;

如何在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多次交换的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于java两个数交换、java多次交换的信息别忘了在本站进行查找喔。

The End

发布于:2022-12-07,除非注明,否则均为首码项目网原创文章,转载请注明出处。