Java中不用第三個(gè)變量來互換兩個(gè)變量的值
我們先看看使用第三變量的方法。(開胃菜)
class Swap{ public static void main(String[] args){ int a = 3; int b = 5; int c; c = a; //把a(bǔ)的值先存到c a = b; //把b存給a b = c; //把存在c的值倒賦給b System.out.println("a="+a); //a==5 System.out.println("b="+b); //b==3 } }
下面是運(yùn)行結(jié)果。
在這個(gè)方法中,我們引用了第三變量c,用c來輔助a與b的交換。
下面才是這次的正餐。
我們將介紹兩種方法,準(zhǔn)備好了嗎?
(1)運(yùn)用加法的性質(zhì)來實(shí)現(xiàn)兩個(gè)數(shù)的互換
那么我們先來展示代碼
import java.util.Scanner; class VariableExchange{ public static void main(String[] args){ Scanner scan = new Scanner(System.in); //創(chuàng)建掃描器 System.out.println("請(qǐng)輸入變量a的值"); long a = scan.nextLong(); //接收第1個(gè)變量值 System.out.println("請(qǐng)輸入變量b的值"); long b = scan.nextLong(); //接收第2個(gè)變量值 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ī)律,用坐標(biāo)軸做輔助,還是很容易理解的。
這種方法在求和時(shí),如果兩個(gè)數(shù)的和超過了使用的數(shù)據(jù)范圍,答案會(huì)出現(xiàn)錯(cuò)誤。
用兩個(gè)數(shù)相乘也可以實(shí)現(xiàn)兩個(gè)數(shù)的互換,原理基本相同,在這里也就不再贅述。
(2)運(yùn)用異或運(yùn)算實(shí)現(xiàn)兩個(gè)數(shù)的互換(硬菜)
首先我們需要知道,在異或運(yùn)算時(shí),會(huì)先將我們輸入的數(shù)字轉(zhuǎn)化成二進(jìn)制,然后進(jìn)行同位判斷。
若同為0或同為1,則該位運(yùn)算結(jié)果為 0
若一個(gè)為0,另一個(gè)為1,則該位運(yùn)算結(jié)果為 1
換成一句人話:同位上相同為0,不同為 1
清楚了這個(gè)運(yùn)算規(guī)律,那么我們來展示代碼:
import java.util.Scanner; class VariableExchange{ public static void main(String[] args){ Scanner scan = new Scanner(System.in); //創(chuàng)建掃描器 System.out.println("請(qǐng)輸入變量a的值"); long a = scan.nextLong(); //接收第1個(gè)變量值 System.out.println("請(qǐng)輸入變量b的值"); long b = scan.nextLong(); //接收第2個(gè)變量值 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 ); } }
如上,我們通過異或運(yùn)算實(shí)現(xiàn)了不通過第三方變量交換兩個(gè)數(shù)的值。
原理:在異或運(yùn)算中,一個(gè)數(shù)異或另一個(gè)數(shù)(數(shù)值相等)兩次,結(jié)果等于他的初始值
我們?cè)儆脤?shí)例具體演示一遍
在這里我們定義a和b用來表示需要互換的兩個(gè)數(shù)
我們運(yùn)用性質(zhì): 一個(gè)數(shù)異或另一個(gè)數(shù)(數(shù)值相等)兩次,結(jié)果等于他的初始值
在上圖中第二步運(yùn)算就行當(dāng)于 a ^ b ^ b ,這個(gè)數(shù)值為17,我們把他賦值給了b
同理 第三步運(yùn)算就相當(dāng)于 b ^ a ^ a ^ b ^ b,這個(gè)數(shù)值為29,我們把他賦值給了a
這樣我們就實(shí)現(xiàn)了 a 和 b 互換。
到此這篇關(guān)于Java中不用第三個(gè)變量來互換兩個(gè)變量的值的文章就介紹到這了,更多相關(guān)Java 變量?jī)?nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
spring?IOC容器管理必須知道的一些操作(基于XML方式)
Spring框架的核心是Spring容器,容器創(chuàng)建對(duì)象,將它們裝配在一起,配置它們并管理它們的完整生命周期,下面這篇文章主要給大家介紹了關(guān)于spring?IOC容器管理必須知道的一些操作,需要的朋友可以參考下2022-03-03Spring Boot Gradle發(fā)布war到tomcat的方法示例
本篇文章主要介紹了Spring Boot Gradle發(fā)布war到tomcat的方法示例,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2018-03-03詳談Array和ArrayList的區(qū)別與聯(lián)系
下面小編就為大家?guī)硪黄斦凙rray和ArrayList的區(qū)別與聯(lián)系。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-06-06使用IntelliJ IDEA2020.2.2 x64 新建java項(xiàng)目并且輸出Hello World
這篇文章主要介紹了使用IntelliJ IDEA2020.2.2 x64 新建java項(xiàng)目并且輸出Hello World,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-11-11解決Mybatis?plus實(shí)體類屬性與表字段不一致的問題
這篇文章主要介紹了Mybatis?plus實(shí)體類屬性與表字段不一致解決方法,文末給大家提到了Mybatis-plus中數(shù)據(jù)庫(kù)表名和表字段名的相關(guān)知識(shí),需要的朋友可以參考下2022-07-07