欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java中不用第三個(gè)變量來互換兩個(gè)變量的值

 更新時(shí)間:2021年10月18日 10:53:57   作者:小年糕糕  
在程序運(yùn)行期間,隨時(shí)可能產(chǎn)生一些臨時(shí)數(shù)據(jù),應(yīng)用程序會(huì)將這些數(shù)據(jù)保存在一些內(nèi)存單元中,每個(gè)內(nèi)存單元都用一個(gè)標(biāo)識(shí)符來標(biāo)識(shí)。這些內(nèi)存單元被稱為變量,定義的標(biāo)識(shí)符就是變量名,內(nèi)存單元中存儲(chǔ)的數(shù)據(jù)就是變量的值

我們先看看使用第三變量的方法。(開胃菜)

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í)例具體演示一遍

請(qǐng)?zhí)砑訄D片描述

在這里我們定義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?IOC容器管理必須知道的一些操作(基于XML方式)

    Spring框架的核心是Spring容器,容器創(chuàng)建對(duì)象,將它們裝配在一起,配置它們并管理它們的完整生命周期,下面這篇文章主要給大家介紹了關(guān)于spring?IOC容器管理必須知道的一些操作,需要的朋友可以參考下
    2022-03-03
  • spring與mybatis整合配置文件

    spring與mybatis整合配置文件

    本文通過實(shí)例代碼給大家介紹了spring與mybatis整合配置文件的方法,需要的朋友參考下吧
    2017-09-09
  • java基礎(chǔ)javeSE程序邏輯控制語(yǔ)法

    java基礎(chǔ)javeSE程序邏輯控制語(yǔ)法

    主要講解Java中程序的邏輯控制語(yǔ)句包括 Java中的輸入輸出方式 順序結(jié)構(gòu)循環(huán)結(jié)構(gòu)等,有需要的朋友可以借鑒參考下,希望能夠有所幫助
    2021-09-09
  • Spring Boot Gradle發(fā)布war到tomcat的方法示例

    Spring Boot Gradle發(fā)布war到tomcat的方法示例

    本篇文章主要介紹了Spring Boot Gradle發(fā)布war到tomcat的方法示例,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-03-03
  • 詳談Array和ArrayList的區(qū)別與聯(lián)系

    詳談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

    這篇文章主要介紹了使用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í)體類屬性與表字段不一致解決方法,文末給大家提到了Mybatis-plus中數(shù)據(jù)庫(kù)表名和表字段名的相關(guān)知識(shí),需要的朋友可以參考下
    2022-07-07
  • Spring的事務(wù)機(jī)制實(shí)例代碼

    Spring的事務(wù)機(jī)制實(shí)例代碼

    這篇文章主要介紹了Spring的事務(wù)機(jī)制實(shí)例代碼,分享了相關(guān)代碼示例,小編覺得還是挺不錯(cuò)的,具有一定借鑒價(jià)值,需要的朋友可以參考下
    2018-02-02
  • mybatis教程之延遲加載詳解

    mybatis教程之延遲加載詳解

    本篇文章主要介紹了mybatis教程之延遲加載詳解。詳細(xì)介紹了延遲加載的意義和用法實(shí)現(xiàn),有興趣的可以了解一下
    2017-05-05
  • Java實(shí)現(xiàn)圖片切割功能

    Java實(shí)現(xiàn)圖片切割功能

    這篇文章主要為大家詳細(xì)介紹了Java實(shí)現(xiàn)圖片切割功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-01-01

最新評(píng)論