以下方法的根本原理就是:

借助第三个变量

c = a;
a = b;
b = c;

运算符-不借助第三变量: 
a = a+b; 
b = a-b; 
a = a-b; 
为运算符-不借助第三个变量:

(此种方法运用这种原理:一个数对另一个数位异或两次,该数不变)
a = a^b; 
b = a^b; 
a = a^b;

/**
* Swap
* 互换两个变量的值的方法
* @author bc
* @since 2018年3月27日
*/
public class Swap {
public static void main(String[] args) {
int a = 3, b = 5;
System.out.println("===临时变量===");
temp(a, b);
System.out.println("===算数运算===");
arithmetic(a, b);
System.out.println("===位运算====");
bit(a, b);
} // 借助第三个变量,使a,b变量的值交换
public static void temp(int a, int b) {
System.out.println("a=" + a + ";b=" + b); int c = a;
a = b;
b = c; System.out.println("a=" + a + ";b=" + b);
} // 算数运算--(不借助第三个变量)
public static void arithmetic(int a, int b) {
System.out.println("a=" + a + ";b=" + b); a = a + b;//
b = a - b;//
a = a - b;// System.out.println("a=" + a + ";b=" + b);
} // 位运算--(不借助第三个变量)
public static void bit(int a, int b) {
System.out.println("a=" + a + ";b=" + b); //按位异或的运算规则--异:1
/**
* a :0011
* b :0101
* a^b :0110
*/
a = a ^ b; //
/**
* a :0110
* b :0101
* a^b :0011
*/
b = a ^ b; //
/**
* a :0110
* b :0011
* a^b :0101
*/
a = a ^ b; // System.out.println("a=" + a + ";b=" + b);
}
}

JAVA交换两个变量的值-(不使用第三变量)的更多相关文章

  1. Java反射交换两个整型变量的值

    在一次面试中,做了这么一道题"交换两个整型变量的值",当时看到这个题目之后,会心一笑,这也太简单了--直接使用中间变量交换不就可以了吗?但是,面试官却说不需要返回值,在调用的地方, ...

  2. 面试题:如何在不使用临时变量temp的情况下交换两个整数的值?

    利用一个小技巧,一个整数a在异或另一个整数b两次以后所得的值还是整数a. 具体的过程我们可以自己找两个整数以二进制的形式自己在纸上画一下他们的异或过程.(异或的运算符号为"^") ...

  3. Java 交换两数的方法

    错误示范 1. 直接交换 public class SwapNumbers { // 直接交换 public static void swap(int a, int b) { int temp = a ...

  4. java交换两个参数值的四种方法

    第一种:添加中间变量,算是最经典最简易的一种了. //添加一个中间变量 int x = 1, y = 2; int z; z = x;x = y;y = z; System.out.println(x ...

  5. 交换两个变量的值不使用第三个变量(Java)

    关于这个问题网上有好多答案,最近有人说这是个奇葩问题 个人测试了一把,如果是普通的数字的话,基本上没有问题 public static void main(String[] args) { int a ...

  6. Java 交换两个变量的数值

    一.参数传递方法 为解决标题问题,首先介绍参数传递方法.目前各类程序设计语言的参数传递方法主要有三种: 按值传递 按引用传递 按指针传递 其中按值传递表示方法(函数)接收的是调用者提供的变量的拷贝,不 ...

  7. UPDATE从左向右,变量优先,逐行更新.顺序执行的,可以交换两列之间的值

    CREATE TABLE tab_update (id TINYINT,n1 NVARCHAR(30),v1 NVARCHAR(30),s1 NVARCHAR(30)) INSERT INTO tab ...

  8. java交换两个值的三种方法 经典

    1.中间变量(在开发中常用) int c=a; a=b; b=c; System.out.println("a的值: "+a+" b的值: "+b); 2.按位 ...

  9. java交换两个数字位置

    第一种:在main输出,通过反射实现 1 public static void main(String[] args) throws Exception { Integer a = 1; Intege ...

随机推荐

  1. 20162314 Sortingtest-work after class

    20162314 Sortingtest-work after class Content Data : 90 8 7 56 123 235 9 1 653. Use JDB or IDEA to t ...

  2. Could not reserve enough space for 1572864KB object heap

    This problem might be caused by incorrect configuration of the daemon.For example, an unrecognized j ...

  3. cogs 341:[NOI2005] 聪聪与可可

    ★★   输入文件:cchkk.in   输出文件:cchkk.out   简单对比 时间限制:1 s   内存限制:256 MB [问题描述] 在一个魔法森林里,住着一只聪明的小猫聪聪和一只可爱的小 ...

  4. COGS 723. [SDOI2007] 超级数组

    ★★☆   输入文件:arr.in   输出文件:arr.out   简单对比 时间限制:1 s   内存限制:3 MB  Source: SDOI2007 Day2[问题描述] 一般的数组大家都经常 ...

  5. zsh + oh-my-zsh 默认shell

    项目地址 zsh -----> http://www.zsh.orgoh-my-zsh ----> http://ohmyz.sh The last shell you’ll ever n ...

  6. Tomcat的配置,设置内存,获取用户IP

    一.修改配置文件 tomcat配置文件路径/tomcat/bin/server.xml # shutdown指定终止Tomcat服务器运行时,发给Tomcat 服务器的shutdown监听端口的字符串 ...

  7. CentOS 7 SSH远程证书登陆

    SSH远程证书登陆是使用"公私钥"认证的方式来进行SSH登录. 1.创建公私钥 创建方式有很多种,比如说通用ssh连接工具创建,然后把公钥上传到Server主机对应的用户目录下: ...

  8. db2快照

    一.获取快照日志 #1.查看数据库编目 db2 list db directory #2.attach 到要分析的数据库 db2 attach to pm1_9 user db2dev #3.conn ...

  9. 解题报告:poj1321 棋盘问题 - 搜索

    棋盘问题 Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 51262 Accepted: 24785 Description 在一 ...

  10. org.springframework.dao.DuplicateKeyException: a different object with the same identifier value was

    在使用hibernate框架里面的:saveOrUpdate报错: 意思就是另一个对象的id(id同值)已经被session关联了. 原因分析: 在第1步中中通过titleList.get(0)获取一 ...