java中两数据交换四种方式

本文介绍了四种在Java中不使用临时变量进行整型变量交换的方法,并提供了详细的代码示例。包括通过额外定义变量法、总和法、异或法及利用运算符优先级特性实现的变量交换。

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

public class DemoTest {
 public static void main(String[] args) {
 
  // 方式1: 额外定变量法  (常用型)
  int x1 = 2147483647;
  int y1 = 2147483646;
  System.out.println("方式1交换之前:x1= " + x1 + ", y1= " + y1);
  int z1 = x1;
  x1 = y1;
  y1 = z1;
  System.out.println("方式1交换之后:x1= " + x1 + ", y1= " + y1);
  //解释说明:如题.
 
  // 方式2:总和法
  int x2 = 7;// 2147483647
  int y2 = 4;// 2147483646
  System.out.println("方式2交换之前:x2= " + x2 + ", y2= " + y2);
  y2 = x2 + y2;
  x2 = y2 - x2;
  y2 = y2 - x2;
  System.out.println("方式2交换之后:x2= " + x2 + ", y2= " + y2);
  //解释说明:如题 方式2要有一个足够大的变量来存储总和,程序容易出现数据越界错误.
   
  // 方式3:使用^(异或)   (整型推荐)
  int a1 = 2147483647;
  int b1 = 2147483646;
  System.out.println("方式3交换之前:a1= " + a1 + ", b1= " + b1);
  a1 = a1 ^ b1; // 
  b1 = a1 ^ b1; // b1^a1^a1 = b1
  a1 = a1 ^ b1; // b1^a1^b1 = a1
  System.out.println("方式3交换之后:a1= " + a1 + ", b1= " + b1);
  //解释说明:^(异或)
  //假设 原始 a = 1, b = 0;
  //a = a ^ b  -> a = 1 ^ 0; a  = 1;
  //b = a ^ b  -> b = 1 ^ 0 ^ 0 ; b = 1;
  //a = a ^ b  -> a = 1 ^ 0 ^ 1; a = 0
  //这中间有一点: a 保持着 a ^ b 来处理, 而 b 则是某一个具体数据
   
 
 
  // 方式4: 使用运算符优先级特点
  int a2 = 2147483647;
  int b2 = 2147483646;
  System.out.println("方式4交换之前:a2:" + a2 + ", b2:" + b2);
  a2 = b2 + (b2 = a2) * 0 ;
  System.out.println("方式4交换之后:a2:" + a2 + ", b2:" + b2);
  //解释说明:暂时无
 }
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值