Java中不用第三個變量來互換兩個變量的值
我們先看看使用第三變量的方法。(開胃菜)
class Swap{
public static void main(String[] args){
int a = 3;
int b = 5;
int c;
c = a; //把a的值先存到c
a = b; //把b存給a
b = c; //把存在c的值倒賦給b
System.out.println("a="+a); //a==5
System.out.println("b="+b); //b==3
}
}
下面是運行結果。

在這個方法中,我們引用了第三變量c,用c來輔助a與b的交換。
下面才是這次的正餐。
我們將介紹兩種方法,準備好了嗎?
(1)運用加法的性質來實現兩個數的互換
那么我們先來展示代碼
import java.util.Scanner;
class VariableExchange{
public static void main(String[] args){
Scanner scan = new Scanner(System.in); //創(chuàng)建掃描器
System.out.println("請輸入變量a的值");
long a = scan.nextLong(); //接收第1個變量值
System.out.println("請輸入變量b的值");
long b = scan.nextLong(); //接收第2個變量值
System.out.println("a=" + a + "\tb=" + b );
System.out.println("執(zhí)行變量互換...");
a = a + b;
b = a - b;
a = a - b;
System.out.println("a=" + a + "\tb=" + b );
}
}

這種方法還是比較容易想到的,只是用到了加法規(guī)律,用坐標軸做輔助,還是很容易理解的。
這種方法在求和時,如果兩個數的和超過了使用的數據范圍,答案會出現錯誤。
用兩個數相乘也可以實現兩個數的互換,原理基本相同,在這里也就不再贅述。
(2)運用異或運算實現兩個數的互換(硬菜)
首先我們需要知道,在異或運算時,會先將我們輸入的數字轉化成二進制,然后進行同位判斷。
若同為0或同為1,則該位運算結果為 0
若一個為0,另一個為1,則該位運算結果為 1
換成一句人話:同位上相同為0,不同為 1
清楚了這個運算規(guī)律,那么我們來展示代碼:
import java.util.Scanner;
class VariableExchange{
public static void main(String[] args){
Scanner scan = new Scanner(System.in); //創(chuàng)建掃描器
System.out.println("請輸入變量a的值");
long a = scan.nextLong(); //接收第1個變量值
System.out.println("請輸入變量b的值");
long b = scan.nextLong(); //接收第2個變量值
System.out.println("a=" + a + "\tb=" + b );
System.out.println("執(zhí)行變量互換...");
a = a ^ b; //執(zhí)行變量互換
b = b ^ a; //執(zhí)行變量互換
a = a ^ b; //執(zhí)行變量互換
System.out.println("a=" + a + "\tb=" + b );
}
}

如上,我們通過異或運算實現了不通過第三方變量交換兩個數的值。
原理:在異或運算中,一個數異或另一個數(數值相等)兩次,結果等于他的初始值
我們再用實例具體演示一遍

在這里我們定義a和b用來表示需要互換的兩個數
我們運用性質: 一個數異或另一個數(數值相等)兩次,結果等于他的初始值
在上圖中第二步運算就行當于 a ^ b ^ b ,這個數值為17,我們把他賦值給了b
同理 第三步運算就相當于 b ^ a ^ a ^ b ^ b,這個數值為29,我們把他賦值給了a
這樣我們就實現了 a 和 b 互換。
到此這篇關于Java中不用第三個變量來互換兩個變量的值的文章就介紹到這了,更多相關Java 變量內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
spring?IOC容器管理必須知道的一些操作(基于XML方式)
Spring框架的核心是Spring容器,容器創(chuàng)建對象,將它們裝配在一起,配置它們并管理它們的完整生命周期,下面這篇文章主要給大家介紹了關于spring?IOC容器管理必須知道的一些操作,需要的朋友可以參考下2022-03-03
Spring Boot Gradle發(fā)布war到tomcat的方法示例
本篇文章主要介紹了Spring Boot Gradle發(fā)布war到tomcat的方法示例,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-03-03
使用IntelliJ IDEA2020.2.2 x64 新建java項目并且輸出Hello World
這篇文章主要介紹了使用IntelliJ IDEA2020.2.2 x64 新建java項目并且輸出Hello World,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-11-11

