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

借助第三个变量

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. Redis 数据结构-字符串源码分析

    相关文章 Redis 初探-安装与使用 Redis常用指令 本文将从以下几个部分进行介绍 1.前言 2.常用命令 3.字符串结构 4.字符串实现 5.命令是如果操作字符串的 前言 平时在使用 Redi ...

  2. 为什么Eureka Client获取服务实例这么慢

    1. Eureka Client注册延迟 Eureka Client启动后不会立即向Eureka Server注册,而是有一个延迟时间,默认为40s 2. Eureka Server更新响应缓存 Eu ...

  3. 学号20145303 《Java程序设计》第一周学习总结

    学号20145303 <Java程序设计>第一周学习总结 教材学习内容总结 *dos命令行: dir:列出当前目录下的文件及文件名 md:创建目录 rd:删除目录.为空时文件夹(文件夹为空 ...

  4. 20145314郑凯杰 《Java程序设计》实验一 Java开发环境的熟悉(Windows + Eclipse)实验报告

    20145314郑凯杰 <Java程序设计>实验一 Java开发环境的熟悉(Windows + Eclipse)实验报告 实验要求 •使用JDK编译.运行简单的Java程序: •使用Ecl ...

  5. LeetCode(476): Number Complement

    Given a positive integer, output its complement number. The complement strategy is to flip the bits ...

  6. linux 忘记登陆密码

    声明:如果不是远程登陆,机器在自己身边还有救. 第一步:重启机器,进入brug界面(grub是一个引导管理程序,可以引导linux.winxp等系统,在/boot/grub/中的menu.lst中进行 ...

  7. 02_MySQL DQL_条件查询

    #查询2:条件查询 /*语法: select 查询列表 from 表名 where 筛选条件; 执行顺序:找到表,逐行筛选,选出行的相关列呈现 分类: 1)按条件表达式筛选 条件运算符:> &l ...

  8. Dockerfile 设置语言包

    最近使用Hangfire的Dashboard, 在本地调试时,显示的是中文,但是通过docker在kubernetes上运行时,就显示成英文了, 怀疑是docker运行环境中没有设计默认的语言包: 我 ...

  9. 生产消费模式:多线程读写队列ConcurrentQueue

    需求:现需要将多个数据源的数据导入到目标数据库,这是一个经典的生产消费应用的例子. 直接上代码,看下实现: // 初始化列队缓冲区 队列大小为100 IDataCollection<List&l ...

  10. 前端要不要学数据结构&算法

    我们都知道前端开发工程师更多偏向 DOM 渲染和 DOM 交互操作,随之 Node 的推广前端工程师也可以完成服务端开发.对于服务端开发而言大家都觉得数据结构和算法是基础,非学不可.所以正在进行 No ...