`

不用第三个变量交换值的五个办法

阅读更多
不用第三个变量交换值的五个办法
package com.kevin.demo;


/**
 * @author  <a href="mailto:foohsinglong@gmail.com">kevin.long</a>
 * @description 2011-12-11 14:22:55
 */
public class ChangeTest {
	
	public void changeMethodA(int a, int b){
		System.out.println("changeMethodA交换之前\ta:"+a+"\tb:"+b);
		a = a + b - (b = a);
		System.out.println("changeMethodA交换之后\ta:"+a+"\tb:"+b);
	}
	
	public void changeMethodB(int a, int b){
		System.out.println("changeMethodB交换之前\ta:"+a+"\tb:"+b);
		b = a + (a = b)*0;
		System.out.println("changeMethodB交换之后\ta:"+a+"\tb:"+b);
	}
	
	public void changeMethodC(int a, int b){
		System.out.println("changeMethodC交换之前\ta:"+a+"\tb:"+b);
		a = a + b;
		b = a - b;
		a = a - b;
		System.out.println("changeMethodC交换之后\ta:"+a+"\tb:"+b);
	}
	
	public void changeMethodD(int a, int b){
		System.out.println("changeMethodD交换之前\ta:"+a+"\tb:"+b);
		a = a * b;
		b = a / b;
		a = a / b;
		System.out.println("changeMethodD交换之后\ta:"+a+"\tb:"+b);
	}
	
	public void changeMethodE(int a, int b){
		System.out.println("changeMethodE交换之前\ta:"+a+"\tb:"+b);
		a = a^b;
		b = a^b;
		a = a^b;
		System.out.println("changeMethodE交换之后\ta:"+a+"\tb:"+b);
	}
	
	public static void main(String[] args) {
		ChangeTest changeTest = new ChangeTest();
		changeTest.changeMethodA(1, 10);
		System.out.println("-----------------------------------");
		changeTest.changeMethodB(2, 9);
		System.out.println("-----------------------------------");
		changeTest.changeMethodC(3, 8);
		System.out.println("-----------------------------------");
		changeTest.changeMethodD(4, 7);
		System.out.println("-----------------------------------");
		changeTest.changeMethodE(5, 6);
	}
}

打印内容 写道
changeMethodA交换之前 a:1 b:10
changeMethodA交换之后 a:10 b:1
-----------------------------------
changeMethodB交换之前 a:2 b:9
changeMethodB交换之后 a:9 b:2
-----------------------------------
changeMethodC交换之前 a:3 b:8
changeMethodC交换之后 a:8 b:3
-----------------------------------
changeMethodD交换之前 a:4 b:7
changeMethodD交换之后 a:7 b:4
-----------------------------------
changeMethodE交换之前 a:5 b:6
changeMethodE交换之后 a:6 b:5
分享到:
评论

相关推荐

    c程序设计习题参考(谭浩强三版)习题参考解答

    请编一程序,用赋初值的方法使c1,c2,c3,c4,c5这5个变量的值分别为’C’,’h’,’i’,’n’,’a’,经过运算,使c1,c2,c3,c4,c5的值分别变为’G’,’l’,’m’,’r’,’e’,并输出。 4 3.8例2.6能否改成...

    你必须知道的495个C语言问题

    第3章 表达式 求值顺序 3.1 为什么这样的代码不行?a[i]=i++; 3.2 使用我的编译器,下面的代码inti=7;printf("%d\n",i++*i++);打印出49。不管按什么顺序计算,难道不该是56吗? 3.3 对于代码inti=3;i=i++;...

    C语言程序设计标准教程

    在第二个for语句中,从a[1]到a[9]逐个与max中的内容比较,若比max的值大,则把该下标变量送入max中,因此max总是在已比较过的下标变量中为最大者。比较结束,输出max的值。 void main() { int i,j,p,q,s,a[10]; ...

    《你必须知道的495个C语言问题》

    第3章 表达式 33 求值顺序 33 3.1 为什么这样的代码不行?a[i]= i++; 33 3.2 使用我的编译器,下面的代码int i= 7; printf("%d\n", i++ * i++); 打印出49。不管按什么顺序计算,难道不该是56吗? 33  3.3 ...

    你必须知道的495个C语言问题.pdf

    第3章 表达式 求值顺序 3.1 为什么这样的代码不行?a[i]= i++; 3.2 使用我的编译器,下面的代码int i= 7; printf("%d\n", i++ * i++); 打印出49。不管按什么顺序计算,难道不该是56吗? 3.3 对于代码int i=3; i=i++;...

    华为编程开发规范与案例

    1、变量/指针在使用前就必须初始化 第5页 【案例1.1.1】 第5页 2、防止指针/数组操作越界 第5页 【案例1.2.1】 第5页 【案例1.2.2】 第6页 【案例1.2.3】 第7页 【案例1.2.4】 第8页 3、避免指针的非法引用 第9页 ...

    你必须知道的495个C语言问题(PDF)

    3.10 如果我不使用表达式的值, 我应该用++i 或i++ 来自增一个变量 吗? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 3.11 为什么如下的代码int a = 100, b = 100; long int c = a * b;...

    C语言FAQ 常见问题列表

    o 4.4 这是个巧妙的表达式: a ^= b ^= a ^= b 它不需要临时变量就可以交换 a 和 b 的值。 o 4.5 我可否用括号来强制执行我所需要的计算顺序? o 4.6 可是 && 和 || 运算符呢?我看到过类似 while((c = getchar())...

    java的传值与传引用详解

     传值还是传引用的问题,到此已经算是解决了,但是我们仍然不能解决这样一个问题:如果我有两个 int 型的变量 a 和 b,我想写一个方法来交换它们的值,应该怎么办?  结论很让人失望——没有办法!因此,我们只能...

    超级有影响力霸气的Java面试题大全文档

    当客户机第一次调用一个Stateful Session Bean 时,容器必须立即在服务器中创建一个新的Bean实例,并关联到客户机上,以后此客户机调用Stateful Session Bean 的方法时容器会把调用分派到与此客户机相关联的Bean实例...

    java 面试题 总结

    在实现中,assertion就是在程序中的一条语句,它对一个boolean表达式进行检查,一个正确程序必须保证这个boolean表达式的值为true;如果该值为false,说明程序已经处于不正确的状态下,系统将给出警告或退出。...

    《计算机操作系统》期末复习指导

    •第三代用户界面:虚拟现实在三维空间(虚拟现实的界面元素)。 3、传统的人机接口 •操作命令 联机(键盘操作命令)、脱机(作业控制语言) 用户组合自编(Shell语言):DOS Shell;UNIX ;B...

    计算机二级公共基础知识

    例如,在图1-1中,根结点A在第1层,结点B,C在第2层,结点D,E,F在第3层。该树的深度为3。 子树 在树中,以某结点的一个子结点为根构成的树称为该结点的一棵子树。 2. 二叉树基本性质 二叉树具有以下几个性质: ...

    PHP基础教程 是一个比较有价值的PHP新手教程!

    如果你为变量var赋值为一个字符串,那么它变成了一个字符串。如果你又为它赋了整数值,那么它就变成了整数。" $foo = "0"; // $foo是字符串(ASCII 48) $foo++; // $foo是字符串"1" (ASCII 49) $foo += 1; // $foo...

    C++MFC教程

    +-- 第三章 文档视结构 |------ 3.1 文档 视图 框架窗口间的关系和消息传送规律 |------ 3.2 接收用户输入 |------ 3.3 使用菜单 |------ 3.4 文档,视,框架之间相互作用 |------ 3.5 利用序列化进行文件读写 |----...

    windows驱动开发技术详解-part2

     第3章 Windows驱动编译环境配置、安装及调试  本章将带领读者一步步对驱动程序进行编译、安装和简单的调试工作。这些步骤虽然简单,但往往困 惑着初次接触驱动程序的开发者。  3.1 用C语言还是用C++语言  ...

Global site tag (gtag.js) - Google Analytics