「java多次交换」java两个数交换
本篇文章给大家谈谈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多次交换的信息别忘了在本站进行查找喔。
发布于:2022-12-07,除非注明,否则均为
原创文章,转载请注明出处。