java实现两个int数交换

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

 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     }

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

原文地址:https://www.cnblogs.com/gode/p/8286675.html

时间: 2024-10-16 10:54:16

java实现两个int数交换的相关文章

Java对两个int类型求百分比的方法

今天制作一个统计报表导出功能,把Java对两个int类型求百分比的处理方法在博客整理一下,给后来有需要的人提供帮助!顺便纪念一下项目的统计功能基本没有问题,就差导出了! 现将代码整理如下: int diliverNum=3;//举例子的变量 int queryMailNum=9;//举例子的变量 // 创建一个数值格式化对象 NumberFormat numberFormat = NumberFormat.getInstance(); // 设置精确到小数点后2位 numberFormat.se

查看两个int数的二进制有几位不同

题目:查看两个int(32位)数的二进制有几位不同. 分析:要理解该题目的意思,就要明白C语言中关于位的一些操作符. 1)"&",按位与操作符,从低位到高位对两个数的每位进行与操作,如1001&1101=1001,都为1则取1: 2)"|",按位或操作符,有一个是1就取1: 3)"^",异或,不同则取1: 4)"~",非操作符,用来对一个二进制数按位取反: 5)"<<",左移操作

两个int变量交换

两个变量int a,int b,不用临时变量过渡,两种方法: 第一种: a= a+b; b= a-b; a= a-b; 第二种:异或的方法,也就是位运算,两个相同的数异或是为0的. a= a^b; b=a^b//就等于b=a^b^b; a=a^b//就等于a=a^b^a

实现两数交换的几种方法

#实现两数交换的几种方法: - - 1.常见的方法(采用临时变量) int x=10; int y=20; int temp=x;//定义临时变量 x=y; y=temp; - 2.异或的方法 int x=10; int y=20; x=x^y; y=x^y;//y=x^y^y=x;即y=10; x=x^y;//x=x^y^x=y;即x=20; ``` - 3.自加的方法 int x=10; int y=20; x=x+y;//x=30; y=x-y;//y=30-20=10; x=x-y;//

C语言与汇编的嵌入式编程:汇编调用函数(两数交换)

编写一个两数交换函数swap,具体代码如下: #include<stdio.h> void swap(int *a,int *b) { int temp; temp = *a; *a = *b; *b= temp; //printf("a=%d,b=%d,temp=%d\n",a,b,temp); } void main(){ int a=0; int b=0; char *str1="a=%d,b=%d\n"; printf("++++++\

在 Java 中不使用多余变量交换两个字符串

在 Java 中不使用多余变量交换两个字符串 public class Test { public static void main(String[] args) { String a = "Hello"; String b = "World"; System.out.println("Strings before swap: a = " + a + " and b = " + b); a = a + b; b = a.sub

java 判断两个时间相差的天数!

package com.datedaycha;     import java.text.SimpleDateFormat;     import java.util.Calendar;     import java.util.Date;     import com.sun.org.apache.xerces.internal.impl.xpath.regex.ParseException;     /*      * java 判断两个时间相差的天数     1.实现目标     输入:两

java面试题之int和Integer的区别

int和Integer的区别 1.Integer是int的包装类,int则是java的一种基本数据类型 2.Integer变量必须实例化后才能使用,而int变量不需要 3.Integer实际是对象的引用,当new一个Integer时,实际上是生成一个指针指向此对象:而int则是直接存储数据值 4.Integer的默认值是null,int的默认值是0 延伸: 关于Integer和int的比较 1.由于Integer变量实际上是对一个Integer对象的引用,所以两个通过new生成的Integer变

《Java架构筑基》从Java基础讲起——Int和Integer深入分析

1.关于int和Integer的问题区别分析 编译阶段.运行时,自动装箱 / 自动拆箱是发生在什么阶段? 使用静态工厂方法 valueOf 会使用到缓存机制,那么自动装箱的时候,缓存机制起作用吗? 为什么我们需要原始数据类型,Java 的对象似乎也很高效,应用中具体会产生哪些差异? 阅读过 Integer 源码吗?分析下类或某些方法的设计要点? int和Integer的区别 1.Integer是int的包装类,int则是java的一种基本数据类型 2.Integer变量必须实例化后才能使用,而i