zoukankan      html  css  js  c++  java
  • 交换两个变量的值的方法-----从简单问题入手


    以前写交换数值的方法,会毫不思索写出这样的语句

    swap(int a ,int b){

    int temp ;

    temp = a ;

    a = b;

    b = temp;

    }

    这样就可以实现a,b两个数的交换


    但是现在要求不能通过第三个变量来做桥梁,只能使用这两个变量,怎么办呢?


    方法一:

    private static void swap2(int a, int b) {
    		a ^= b;
    		b ^= a;
    		a ^= b;
    		System.out.println("swap2:a = " + a + ";b = " + b);
    		
    	}


    利用了异或赋值运算符


    方法二:

    private static void swap3(int a, int b) {
    		a = b + (b = a)*0;
    		
    		System.out.println("swap3 a = " + a + ";b = " + b);
    	}

    这个方法够绝,一条语句写完


    方法三

    	private static void swap4(int a, int b) {
    		a = a + b;
    		b = a - b;
    		a = a - b;
    		System.out.println("swap4: a = " + a + ";b = " + b);
    	}

    巧妙利用算术运算



    方法四:

    	private static void swap5(int a, int b) {
    		a = a * b;
    		b = a / b;
    		a = a / b;
    		System.out.println("swap5: a = " + a + ";b = " + b);
    	}

    与方法三有点类似


    但现在问题来了,在Java里,不存在指针、引用传递的概念,如何来解决这个问题呢?

    一种不太好的方法是把要交换的变量包装到一个对象里,通过对象的引用达到交换的目的,但问题是复杂了,还有没有简单的方法呢?


    目前还没有找到……


    Java不同于C、C++,没有指针的概念,所以有些问题Java实在无能为力~~~~


  • 相关阅读:
    第二次作业循环语句
    c语言01次作业分支,顺序结构
    PAT 1027. Colors in Mars
    PAT 1026 Table Tennis
    PAT 1035 Password
    PAT 1038. Recover the Smallest Number
    PAT 1028 List Sorting (25)
    PAT 1041 Be Unique (20)
    PAT 1025 PAT Ranking
    1037. Magic Coupon
  • 原文地址:https://www.cnblogs.com/james1207/p/3285652.html
Copyright © 2011-2022 走看看