Java 两个变量交换值

package test; public class Test {
    public static void main(String[] args) {
        int a, b;
        a = 10;
        b = 12;
        System.out.println(a + "  " + b);

/*
         * 借助第三方变量 这种算法易于理解,特别适合帮助初学者了解计算机程序的特点,是赋值语句的经典应用。
         * 在实际软件开发当中,此算法简单明了,不会产生歧义,便于程序员之间的交流。 一般情况下碰到交换变量值的问题,都应采用此算法(标准算法)。
         */
        int temp = a;
        a = b;
        b = temp;
        System.out.println(a + "  " + b);

/*
         * 算术算法 它的原理是:把a、b看做数轴上的点,围绕两点间的距离来进行计算。 具体过程:
         * 第一句“a=b-a”求出ab两点的距离,并且将其保存在a中;
         * 第二句“b=b-a”求出a到原点的距离(b到原点的距离与ab两点距离之差),并且将其保存在b中;
         * 第三句“a=b+a”求出b到原点的距离(a到原点距离与ab两点距离之和),并且将其保存在a中。完成交换。
         * 此算法与标准算法相比,多了三个计算的过程,但是没有借助临时变量。(算术算法)
         */
        a = b - a;
        b = b - a;
        a = b + a;
        System.out.println(a + "  " + b);

/*
         * 异或 相同为1 不同为0 此算法能够实现是由异或运算的特点决定的,通过异或运算能够使数据中的某些位翻转,其他位不变。
         * 这就意味着任意一个数与任意一个给定的值连续异或两次,值不变。
         * 即:a^b^b=a。将a=a^b代入b=a^b则得b=a^b^b=a;同理可以得到a=b^a^a=b;轻松完成交换。
         */
        a = a ^ b;// 1010 ^ 1100 1001
        b = a ^ b;// 1001 ^ 1100 1010
        a = a ^ b;// 1001 ^ 1010 1100
        System.out.println(a + "  " + b);
    }
}

时间: 2024-10-16 20:46:21

Java 两个变量交换值的相关文章

两个变量交换值的方法

使用中间变量 int n1=10, n2=20; int tmp = n1; n1 = n2; n2 = tmp; Console.WriteLine("n1={0},n2={1}", n1, n2); Console.ReadKey(); 2.加减法 int n1 = 10, n2 = 20; n1 = n1 + n2; n2=n1-n2; n1 = n1 - n2; Console.WriteLine("n1={0},n2={1}", n1, n2); Cons

两个变量交换值的几种方法

交换两个变量值得方法总结了一下使用中间变量   int n1=11, n2=10; int tmp = n1; n1 = n2; n2 = tmp; Printf("n1=%d,n2=%d", n1, n2); return 0;  加减法 int n1 = 11, n2 = 10; n1 = n1 + n2; n2=n1-n2; n1 = n1 - n2; Printf("n1=%d,n2=%d", n1, n2); return 0;  堆栈 int n1 =

黑马程序员-C语言基础:两个变量交换值的方法

学习任何语言基础时,两个数值得交换是必须掌握的,下面简绍3中方式(c语言) 方法一:利用数学的计算技巧 1 #include <stdio.h> 2 int main() 3 { 4 5 int a =10, b = 20; 6 7 printf("交换前a=%d, b=%d\n", a, b); 8 9 a = a - b; 10 b = a + b; 11 a = b - a; 12 13 printf("交换后a=%d, b=%d\n", a, b

只用两个变量交换值、杂记

第一种方法: 1 int a = 3; 2 int b = 5; 3 a = a + b; 4 b = a - b; 5 a = a - b; 缺点:a和b是很大的数的话容易溢出. 第二种方法: int a = 3; int b = 5; a = a ^ b; b = a ^ b; a = a ^ b; "^"是异或运算,这样就不会有溢出的问题了. 00000011 ^ 00000101 等于 00000110 00000110 ^ 00000101 等于 00000011 1.str

JavaScript两个变量的值交换的多种方式

前言 该文是在看别人博客的时候发现的,很有趣的一篇文章,这里摘录到自己的简书中,供给各位读者学习本文主要描述,如何不使用中间值,将两个变量的值进行交换.前三种只适用于number类型的数值交换,第四和第五种适合其他类型. 简书原文 https://www.jianshu.com/p/64a503c762e9 一.普通做法 普通的做法就是声明多一个临时变量tmp,进行数据交换过程中的缓存.这样的做法直观,易懂.但是,会增加内存的使用. var a = 1, b = 2, tmp; tmp = a;

两个变量交换的四种方法(Java)

对于两种变量的交换,我发现四种方法,下面我用Java来演示一下. 1.利用第三个变量交换数值,简单的方法. (代码演示一下) class TestEV//创建一个类{ public static void main(String[]args) { int x =5,y=10; //定义两个变量 int temp = x; //定义第三临时变量temp并提取x值 x = y; //把y的值赋给x y = temp; //然后把临时变量temp值赋给y System.out.println("x=&

两个变量交换的四种方法(Java) 七种方法(JS)

对于两种变量的交换,我发现四种方法,下面我用Java来演示一下. 1.利用第三个变量交换数值,简单的方法. (代码演示一下) 1 class TestEV 2 //创建一个类 3 { 4 public static void main(String[]args) 5 { 6 int x =5,y=10; //定义两个变量 7 8 int temp = x; //定义第三临时变量temp并提取x值 9 x = y; //把y的值赋给x 10 y = temp; //然后把临时变量temp值赋给y

JAVA语法——实现两个变量互换

具体细节见:https://blog.csdn.net/wwt18811707971/article/details/78291490 package 实现两个变量的互换; import java.util.Scanner; public class 实现两个变量的互换 { public static void main(String[] args) { Scanner scan = new Scanner(System.in); System.out.println("请输入变量 A 的值:&

JAVA不用临时变量交换两个变量的值

交换两个变量的值,不适用临时变量 1 public class Test{ 2 public static void main(String[] args){ 3 int a = 1; 4 int b = 2; 5 // 请交换两个变量的值 6 } 7 } 交换两变量的值 加减实现交换 1 public class Test{ 2 public static void main(String[] args){ 3 int a = 1; 4 int b = 2; 5 // 请交换两个变量的值 6