博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
交换两个整数的三种方法
阅读量:6717 次
发布时间:2019-06-25

本文共 2727 字,大约阅读时间需要 9 分钟。

package com.zby.bubble;/** * 
三种方法交换两个整数的值 * * @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(); } /** *
使用一个临时变量交换,优点:对于其他类型同样适用。 * * @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); } /** *
重点:一个整数异或另一个整数两次,得到的还是这个原来的数。优点:不引入临时变量;缺点:只能对整数使用。 * * @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); } /** *
注意:加减法交换可能导致溢出,但是,没影响!!!!!溢出去又溢回来,结果是对的,是可以放心用的!!!!!之前进入误区以为溢出会有什么问题,然而并没有。 * * @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----------华丽丽的分割线----------

 

转载于:https://www.cnblogs.com/zby9527/p/7472766.html

你可能感兴趣的文章
java 数组偶数排在奇数前面
查看>>
window.frames["detailFrm"].isSubmitting = true;//?起什么作用
查看>>
ASCII表
查看>>
idea之debug
查看>>
什么是真正的流程管理?流程管理的是与不是。
查看>>
SEO实践:SEO友好的URL结构
查看>>
洛谷P1613 跑路
查看>>
python各种模块,迭代器,生成器
查看>>
微信小程序 watch监听数据变化 类似vue中的watch
查看>>
u检验、t检验、F检验、X2检验 (转)
查看>>
不可不知的Python模块: collections
查看>>
PAT 1066. Root of AVL Tree (25)
查看>>
hdu1052
查看>>
服务器端推送技术
查看>>
python开发工具
查看>>
Home Assistant系列 -- 自动语音播报天气
查看>>
Hyberledger-Fabric 1.00 RPC学习(1)
查看>>
SDNU 1450.报时助手
查看>>
BZOJ 4144 Dijkstra+Kruskal+倍增LCA
查看>>
阻塞与非阻塞,同步与异步
查看>>