当前位置: 移动技术网 > IT编程>开发语言>Java > java实现两个int数交换

java实现两个int数交换

2018年01月15日  | 移动技术网IT编程  | 我要评论

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

 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     }

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

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网