最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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)文章

  • Java 阻塞隊(duì)列詳解及簡(jiǎn)單使用

    Java 阻塞隊(duì)列詳解及簡(jiǎn)單使用

    這篇文章主要介紹了Java 阻塞隊(duì)列詳解及簡(jiǎn)單使用的相關(guān)資料,需要的朋友可以參考下
    2017-02-02
  • 深入java垃圾回收的詳解

    深入java垃圾回收的詳解

    本篇文章是對(duì)java垃圾回收進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-06-06
  • spring注解如何為bean指定InitMethod和DestroyMethod

    spring注解如何為bean指定InitMethod和DestroyMethod

    這篇文章主要介紹了spring注解如何為bean指定InitMethod和DestroyMethod,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-11-11
  • Spring中的@PostConstruct注解使用方法解析

    Spring中的@PostConstruct注解使用方法解析

    這篇文章主要介紹了Spring中的@PostConstruct注解使用方法解析,@PostConstruct注解是用來處理在@Autowired注入屬性后init()方法之前,對(duì)一些零散的屬性進(jìn)行賦值的注解,需要的朋友可以參考下
    2023-11-11
  • Java使用PreparedStatement接口及ResultSet結(jié)果集的方法示例

    Java使用PreparedStatement接口及ResultSet結(jié)果集的方法示例

    這篇文章主要介紹了Java使用PreparedStatement接口及ResultSet結(jié)果集的方法,結(jié)合實(shí)例形式分析了PreparedStatement接口及ResultSet結(jié)果集的相關(guān)使用方法與操作注意事項(xiàng),需要的朋友可以參考下
    2018-07-07
  • 淺談Java堆外內(nèi)存之突破JVM枷鎖

    淺談Java堆外內(nèi)存之突破JVM枷鎖

    這篇文章主要介紹了淺談Java堆外內(nèi)存之突破JVM枷鎖,涉及jvm內(nèi)存分配,jvm垃圾回收,堆外內(nèi)存的垃圾回收等相關(guān)內(nèi)容,具有一定參考價(jià)值,需要的朋友可以了解下。
    2017-11-11
  • 淺談Java編程中的單例設(shè)計(jì)模式

    淺談Java編程中的單例設(shè)計(jì)模式

    這篇文章主要介紹了Java編程中的單例設(shè)計(jì)模式,在許多語言的編程過程當(dāng)中單例模式都被開發(fā)者們廣泛采用,需要的朋友可以參考下
    2015-07-07
  • 使Java的JButton文字隱藏功能的實(shí)現(xiàn)(不隱藏按鈕的前提)

    使Java的JButton文字隱藏功能的實(shí)現(xiàn)(不隱藏按鈕的前提)

    這篇文章主要介紹了使Java的JButton文字隱藏功能的實(shí)現(xiàn)(不隱藏按鈕的前提),本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-01-01
  • java 中 阻塞隊(duì)列BlockingQueue詳解及實(shí)例

    java 中 阻塞隊(duì)列BlockingQueue詳解及實(shí)例

    這篇文章主要介紹了java 中 阻塞隊(duì)列BlockingQueue詳解及實(shí)例的相關(guān)資料,需要的朋友可以參考下
    2017-03-03
  • 老生常談Scanner的基本用法

    老生常談Scanner的基本用法

    下面小編就為大家?guī)硪黄仙U凷canner的基本用法。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-07-07

最新評(píng)論

商水县| 岐山县| 藁城市| 美姑县| 德化县| 西藏| 德保县| 奎屯市| 保山市| 常熟市| 遂川县| 沈丘县| 德格县| 琼中| 东城区| 松阳县| 来宾市| 郸城县| 荆门市| 武川县| 巴马| 固镇县| 丰镇市| 大同县| 本溪市| 肥乡县| 外汇| 定远县| 双鸭山市| 连云港市| 葫芦岛市| 本溪市| 育儿| 镇原县| 理塘县| 隆回县| 金山区| 无锡市| 刚察县| 育儿| 岗巴县|