Java数值类型交换

本文深入探讨了三种不同的数值交换方法:使用中间变量、数学运算及异或操作。每种方法均有其优缺点,如可读性、内存使用及数据类型限制。通过实例,读者将了解如何在Java中实现这些交换技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在项目中,经常会用到数值交换,那么数值的交换又可以有多少种情况实现呢?

前提基础:

		int num1=10;
		int num2=20;
		System.out.println("num1="+num1+",num2="+ num2);

实现方式一:

说明:采用中间变量的方式实现,以中间变量作为中间介质进行数据交换。

		int temp=num1;
		num1=num2;
		num2=temp;
		System.out.println("num1="+num1+",num2="+ num2);

结果:

在这里插入图片描述

实现方式二:

		//此时:num1=10;num2=20;
		num1=num1+num2;
		//此时:num1=30;num2=20;
		num2=num1-num2;
		//此时:num2=30-20=10,是原来基础数据num1的值,将其赋值给num2以达到数据交换的目的。
		//num1仍然为30
		num1=num1-num2;
		//此时num2=10,但是num1=30-10=20,该值为基础数据中num2的值,将其赋值给num1,以达到数据交换的目的。
		System.out.println("num1="+num1+",num2="+ num2);

结果:

在这里插入图片描述

实现方式三:

说明:采用异或的方式,因为数据都是以二进制补码的形式进行存储,异或即两位二进制数字,相同位0,不同位1.

		//num1=10,num2=20
		num1=num1^num2;
		//此时num1为num1和num2异或的结果
		num2=num1^num2;
		//num1与num2异或,得到原来num1的值,将该值赋值给num2
		num1=num1^num2;
		//num1与原来num1的值,(即现在num2的值做异或),结果来原来num2的值,赋值给num1

结果:

在这里插入图片描述

比较:

优点缺点
方式一可读性强,适用于任何类型需要声明一个变量,多开辟一块内存空间
方式二省一块内存空间只能是数值类型,并且如果数据过大,可能造成数据溢出,可读性差,较复杂
方式三省一块内存空间只能是数值类型,可读性差,较负责

总结:如果大家使用的时候建议使用第一种方式,第二种方式知道即可。

评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值