欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

java实现两个int数交换

程序员文章站 2022-03-21 20:35:02
普通方法,进阶方法,大神方法 方法二不建议使用,因为有可能丢失精度 ......

普通方法,进阶方法,大神方法

 1 @Test
 2     public void test3(){
 3         int m = 5;
 4         int n = 12;
 5         
 6         //要求m和n交换位置
 7         System.out.println("m=" + m + " n=" + n);//m=5 n=12
 8         
 9         //方法一:定义临时变量
10         //优点:操作简单,缺点:需定义临时变量,内存消耗较大
11         int temp = m;
12             m = n;
13             n = temp;
14         System.out.println("m=" + m + " n=" + n);//m=12 n=5
15         
16         //方法二:不定义临时变量,使用相加
17         //优点:无需定义临时变量,节省内存。缺点:当两个数值较大时,容易丢失精度
18         m = m + n;//12 + 5
19         n = m - n;//12 + 5 - 5,是原来的m的值,赋给n
20         m = m - n;//12 + 5 - 12,是原来n的值,赋给m
21         System.out.println("m=" + m + " n=" + n);//m=5 n=12
22         
23         //方法三:大神专用,使用异或^
24         //优点:不会丢失精度,不用定义变量,内存消耗最小,缺点:一般人不会想到这么写,写了一般人也看不懂
25         m = m ^ n;
26         n = m ^ n;// m ^ n ^ n == m
27         m = m ^ n;// m ^ n ^ m == n
28         System.out.println("m=" + m + " n=" + n);//m=12 n=5
29         
30     }

方法二不建议使用,因为有可能丢失精度