实现两个正数变量互换

xiaoxiao2021-02-28  48

这是一道面试题:请实现两个变量内容的互换

例如:

int a = 10; int b = 20;

希望得到的结果是:

a=20 b=10

下面直接看代码(代码中呈现了处理的几种方式):

/** * 面试题: * 请自己实现两个正数变量交换 * @author wangjg * */ public class OperatorTest1 { public static void main(String[] args) { // 方式1:使用第三方变量 System.out.println("第一种方式=========================="); int a = 10; int b = 20; System.out.println("初始值:a:"+a+",b:"+b); int c = 0; c = a; a = b; b = c; System.out.println("结果: a:"+a+",b:"+b); // 方式2:用加减法 System.out.println("第二种方式=========================="); int x = 10; int y = 20; System.out.println("初始值:x:"+x+",y:"+y); x = x + y; y = x - y; x = x - y; System.out.println("结果:x:"+x+",y:"+y); // 方式3:用异或实现,面试使用,一个数被同一个数异或两次还是它自己 System.out.println("第三种方式=========================="); int i = 10; int j = 20; System.out.println("初始值:i:"+i+",j:"+j); i = i ^ j; j = i ^ j; i = i ^ j; System.out.println("结果:i:"+i+",j:"+j); // 一句话搞定 b = (a+b) - (a=b); // 开始a为10,b为20 // 1、运行a+b为30,表达式为 b = 30 - (a=b),此时a为10, b为20 // 2、运行a=b,表达式为 b = 30 - 20,此时a为20,b为10 // 3、运行30-20,结果a为20,b为10; } } 结果: 第一种方式========================== 初始值:a:10,b:20 结果: a:20,b:10 第二种方式========================== 初始值:x:10,y:20 结果:x:20,y:10 第三种方式========================== 初始值:i:10,j:20 结果:i:20,j:10

转载请注明原文地址: https://www.6miu.com/read-2628145.html

最新回复(0)