`
bugyun
  • 浏览: 559097 次
社区版块
存档分类
最新评论

Java 不使用中间变量交换两个数

    博客分类:
  • Java
 
阅读更多
public class ChangeStation {

	public static void main(String[] args) {
		Num num = new Num(3, 4);
		swapOne(num);
//		swapTwo(num);
		System.out.println(num);
	}

	/**
	 * @description: 通过某种运算(二元运算)将a和b两个数变成一个数, 
	 * 				并保存在其中一个变量中, 
	 * 				然后再通过同样的运算符将a或b中和掉,
	 *              这样实际上是利用了a或 b本身作为了中间变量。
	 * @param num
	 * @return void
	 * @throws @author
	 *             beyond
	 * @data:2016年10月28日下午3:09:31
	 */
	public static void swapOne(Num num) {
		num.a = num.a + num.b;
		num.b = num.a - num.b;
		num.a = num.a - num.b;
	}

	
	/**
	 * @description: 异或运算符: 任何数与0异或后仍然为它本身,两个相同的数异或后为0
	 * @param num   
	 * @return void   
	 * @throws
	 * @author beyond
	 * @data:2016年10月28日下午3:11:16
	 */
	public static void swapTwo(Num num) {
		num.a = num.a ^ num.b;
		num.b = num.a ^ num.b;
		num.a = num.a ^ num.b;
	}

	
	/**
	 * @description: 交换的类
	 * @author beyond
	 * @data:2016年10月28日下午3:11:16
	 */
	static class Num {
		private int a;
		private int b;

		public Num(int a, int b) {
			super();
			this.a = a;
			this.b = b;
		}

		@Override
		public String toString() {
			return "Num [a=" + a + ", b=" + b + "]";
		}

	}
}

 

分享到:
评论

相关推荐

    Java不使用中间变量交换两个数

    在编程中,交换两个数值是常见的操作,但不使用中间变量进行交换可能需要一些巧妙的技巧。本文将探讨如何在Java中实现这一目标,主要基于数的中和原理,即通过特定的运算使得两个数相互抵消,从而达到交换的目的。 ...

    Java 程序交换两个数字.docx

    // Java 程序不使用第三变量交换两个值 public class SwapNumbers { static void swapWithoutThirdVariable(int m, int n) { // 根据算法步骤交换值 m = m - n; n = m + n; m = n - m; // 打印交换后的值 ...

    Java实现两个整数交换

    本人上传的第一个作品,超级简单,两个整数交换的经典例子,是在一个类中实现的,给JAVA初学者一个借鉴。希望在技术上共同进步

    Java两个变量的互换(不借助第3个变量)具体实现方法

    在Java编程中,有时我们需要交换两个变量的值,但又不希望使用额外的第三个变量来辅助这个过程。这种情况下,可以利用位运算中的异或(XOR)操作符来实现两个变量的互换。本文将详细讲解如何通过异或运算在Java中不...

    不用第三方变量交换两数的值

    在编程中,交换两个数值是常见的操作,但有时我们可能会面临一种情况,即不允许使用额外的(第三方)变量来辅助交换。这个问题在各种编程语言中都有不同的解决方案,下面我们将详细探讨几种主流的方法。 首先,我们...

    两数交换的三种方法C#_java 两数交换的三种方法 两数交换方法

    第三种方法利用了位运算中的异或(XOR)操作符,这种方法不仅不使用额外的变量,而且在大多数情况下效率较高。步骤如下: 1. A与B进行异或操作,结果赋给A。 2. B与新的A(原B异或原A的结果)再次进行异或操作,...

    Java 交换两个变量的数值实现方法

    在Java中,交换两个变量的值是一个常见的编程任务,尤其在数组排序或数据处理时。在Java中,由于参数传递机制的原因,交换两个变量的值需要一些技巧。这里我们将详细探讨这个问题。 首先,理解Java的参数传递机制至...

    两个数字的交换,三种方法

    方法一:使用第三方变量交换数据; 方法二:使用加减法,并且不使用第三方变量 思路:a加上b的和,减去a,就等于b,再用这个数减去b,就等于a。 方法三:使用异或方法交换,并且不使用第三方变量 ...

    第02章 Java编程基础 08 位运算符与变量交换

    在编程中,有时我们需要交换两个变量的值,而不使用额外的临时变量。位运算符可以有效地实现这一点,下面以一个例子说明: ```java int a = 5; // 二进制:0101 int b = 10; // 二进制:1010 a = a ^ b; // a现在是...

    java中关于变量的练习题及答案

    ### Java中关于变量的练习题及答案解析 #### 基础知识点概述 在Java编程语言中,变量是...以上就是关于Java中变量的相关练习题及解析。通过这些练习,可以帮助初学者更好地掌握Java变量的基本使用方法及其注意事项。

    java比较四个数的大小(二类个)

    2. **变量声明与赋值**:在Java中,变量必须先声明再使用。声明时需要指定变量的数据类型,如 `int x;` 表示 `x` 是一个整型变量。 3. **条件语句**:通过 `if` 语句可以实现基于条件的分支控制。例如: ```java ...

    两个书交换最小内存方法

    **异或交换法**是一种非常有趣的不使用额外变量来交换两个整数的方法。它基于XOR运算的特点,即任何数与自身进行XOR操作结果为0,任何数与0进行XOR操作结果为该数本身。具体步骤如下: 1. **初始化**: - 假设有两...

    Java中使用异或语句实现两个变量的互换

    在Java编程语言中,有时我们需要交换两个变量的值,例如在数组排序算法或者特定的数据处理逻辑中。传统的方法是引入一个额外的临时变量来完成这个任务。然而,有一种更为巧妙且节省空间的方法,即利用位操作中的异或...

    求两个数(高位)的最大公约数的代码

    - 修正`swap`方法,使其能正确交换两个变量的值。 #### 结论 本文介绍了如何使用Java编写一个简单的程序来计算两个高位数的最大公约数。虽然提供的代码存在一些问题,但其基本思路和算法是正确的。通过对代码进行...

    java如何交换这两个变量的值方法介绍

    在Java中,我们可以使用异或(^)操作符来交换两个变量的值,因为异或两次相同的数等于零。具体步骤如下: ```java int x = 10; int y = 20; x = x ^ y; // 对x和y进行异或运算,得到它们的异或结果并赋给x y ...

    Java开发技术大全(500个源代码).

    trySwap.java 试图交换两个形参的值 useOnlyTest.java 创建多个对象,演示this的作用 useStaticBolck.java 使用静态块 useStVar.java 使用静态成员变量 第4章 示例描述:本章学习继承与多态。 absClass.java ...

    java 四种数据交换经典

    这种方法不使用额外的临时变量,而是通过数学运算(加法和减法)来实现两个变量值的交换。该方法虽然节省了内存空间,但在某些情况下可能会导致溢出问题。 **示例代码解析:** ```java int x2 = 7; int y2 = 4; ...

    Python 函数的返回值-03-交换两个变量的值

    Python解释器易于扩展,可以使用C语言或C++(或者其他可以通过C调用的语言)扩展新的功能和数据类型。Python也可用于可定制化软件中的扩展程序语言。Python丰富的标准库,提供了适用于各个主要系统平台的源码或机器...

    两个QM之间消息传递JAVA程序

    标题中的“两个QM之间消息传递JAVA程序”指的是在IBM WebSphere MQ(以前称为MQSeries)环境中,使用Java编程语言实现在两个队列管理器(QM)之间的消息通信。描述中提到的方法是通过设置远程队列来实现这个目标,这...

    用JAVA解线性方程组

    可以使用 Java 语言创建一个 EquationSolver 类,提供了创建矩阵、交换行、乘以数和加行的方法。 知识点 5:解决线性方程组 使用 Java 语言可以解决线性方程组,通过矩阵操作将矩阵转换为标准型增广系数矩阵,然后...

Global site tag (gtag.js) - Google Analytics