交换两个整数的三种方法
Posted 龘驫
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了交换两个整数的三种方法相关的知识,希望对你有一定的参考价值。
package com.zby.bubble; /** * <class description> 三种方法交换两个整数的值 * * @author zby * */ public class Exchange { public static void main(String[] args) { splitLine(); exchange1(Integer.MAX_VALUE, Integer.MAX_VALUE - 1); exchange1(99, 100); exchange1(Integer.MIN_VALUE, Integer.MIN_VALUE + 1); splitLine(); exchange2(Integer.MAX_VALUE, Integer.MAX_VALUE - 1); exchange2(99, 100); exchange2(Integer.MIN_VALUE, Integer.MIN_VALUE + 1); splitLine(); exchange3(Integer.MAX_VALUE, Integer.MAX_VALUE - 1); exchange3(99, 100); exchange3(Integer.MIN_VALUE, Integer.MIN_VALUE + 1); splitLine(); } /** * <method description>使用一个临时变量交换,优点:对于其他类型同样适用。 * * @param a * @param b */ public static void exchange1(int a, int b) { System.out.println("使用临时变量法进行交换,引入第三方变量"); System.out.println("交换之前:a=" + a + ",b=" + b); int temp = a; a = b; b = temp; System.out.println("交换之后:a=" + a + ",b=" + b); } /** * <method description>重点:一个整数异或另一个整数两次,得到的还是这个原来的数。优点:不引入临时变量;缺点:只能对整数使用。 * * @param a * @param b */ public static void exchange2(int a, int b) { System.out.println("使用异或法进行交换,不引入第三方变量"); System.out.println("交换之前:a=" + a + ",b=" + b); a ^= b; b ^= a; a ^= b; System.out.println("交换之后:a=" + a + ",b=" + b); } /** * <method description>注意:加减法交换可能导致溢出,但是,没影响!!!!!溢出去又溢回来,结果是对的,是可以放心用的!!!!!之前进入误区以为溢出会有什么问题,然而并没有。 * * @param a * @param b */ public static void exchange3(int a, int b) { System.out.println("使用加减法进行交换,不引入第三方变量"); System.out.println("交换之前:a=" + a + ",b=" + b); a += b; b = a - b; a -= b; System.out.println("交换之后:a=" + a + ",b=" + b); } public static void splitLine() { System.out.println("----------华丽丽的分割线----------"); } }
----------华丽丽的分割线---------- 使用临时变量法进行交换,引入第三方变量 交换之前:a=2147483647,b=2147483646 交换之后:a=2147483646,b=2147483647 使用临时变量法进行交换,引入第三方变量 交换之前:a=99,b=100 交换之后:a=100,b=99 使用临时变量法进行交换,引入第三方变量 交换之前:a=-2147483648,b=-2147483647 交换之后:a=-2147483647,b=-2147483648 ----------华丽丽的分割线---------- 使用异或法进行交换,不引入第三方变量 交换之前:a=2147483647,b=2147483646 交换之后:a=2147483646,b=2147483647 使用异或法进行交换,不引入第三方变量 交换之前:a=99,b=100 交换之后:a=100,b=99 使用异或法进行交换,不引入第三方变量 交换之前:a=-2147483648,b=-2147483647 交换之后:a=-2147483647,b=-2147483648 ----------华丽丽的分割线---------- 使用加减法进行交换,不引入第三方变量 交换之前:a=2147483647,b=2147483646 交换之后:a=2147483646,b=2147483647 使用加减法进行交换,不引入第三方变量 交换之前:a=99,b=100 交换之后:a=100,b=99 使用加减法进行交换,不引入第三方变量 交换之前:a=-2147483648,b=-2147483647 交换之后:a=-2147483647,b=-2147483648 ----------华丽丽的分割线----------
以上是关于交换两个整数的三种方法的主要内容,如果未能解决你的问题,请参考以下文章