重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
用第三个变量来存储。
成都创新互联专注于企业成都营销网站建设、网站重做改版、太仓网站定制设计、自适应品牌网站建设、成都h5网站建设、商城网站制作、集团公司官网建设、成都外贸网站制作、高端网站制作、响应式网页设计等建站业务,价格优惠性价比高,为太仓等各大城市提供网站开发制作服务。
就是再申请一个变量。
int
num1=10;
int
num2=8;
int
temp=0
temp=num1;//将num1的值赋给中间变量temp
num1=num2;//将num2的值赋给num1;
num2=temp;//将temp的值赋给num2,num1和num2的值就互换了。
这个方法是最通用的,记住这个就行了。
如果可以使用第三个变量来进行互换变量,可以进行如下操作:
int a= 5 , b = 6;
int temp ;
temp = a ;
a = b;
b = temp;
这样就可以了。
也可以不使用第三变量:如下:
int a= 5 , b = 6;
a = a + b;
b = a - b;
a = a - b;
这样也是可以的。
利用异或(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中的对象传递时,对形参的改变依然会意向到该对象的内容。
参考资料:
百度百科——参数传递
可以利用以下方式:通过异或实现(异或符号为^)关于^:异或的运算法则,相当于不带进位的二进制加法。二进制下用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.此方法同样实现了两个数互换。
String str1="我是变量1";
String str2="我要和str1换位置";
String str3="";
将str1与str2互换
str3=str1;//先把str1给str3
str1=str2;//把str2的给str1
str2=str3;//str3其实是str1的值,这样str1的值就给了str2
^ 在java中是位运算符,异或运算。你圈的那三行核心代码就是通过异或运算来交换变量A、B的值。
关于异或运算:异或运算
public class Test {
public static void main(String[] args) {
int A = 14;
int B = 5;
A = A ^ B;
B = B ^ A;
A = A ^ B;
System.out.println("A = " + A); // A = 5
System.out.println("B = " + B); // B = 14
}
}
执行结果
就现在的实际开发来说这种写法适合装逼。
在现在的实际开发中通常是下面这样写的,简单易懂
int temp = A; // 引入一个中间变量
A = B;
B = temp;