亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

Java交換兩個變量的數值

2019-11-14 15:11:03
字體:
來源:轉載
供稿:網友

一、參數傳遞方法

為解決標題問題,首先介紹參數傳遞方法。目前各類程序設計語言的參數傳遞方法主要有三種:

  1. 按值傳遞
  2. 按引用傳遞
  3. 按指針傳遞

其中按值傳遞表示方法(函數)接收的是調用者提供的變量的拷貝,不改變參數的值;按引用傳遞表示方法(函數)接收的調用者提供的變量地址;按指針傳遞表示方法(函數)接收的是調用者提供的指針的拷貝,不改變指針的值和地址,但可以改變指針所指向的地址。

二、java參數傳遞方法

Java提供的參數傳遞方法,很遺憾只有一種,按值傳遞。也就是說,方法得到的是所有參數值的一個拷貝,方法不能修改傳遞給它的參數變量的內容。

Java的方法參數類型可以分為兩類:

  1. 基本數據類型
  2. 對象引用

有過Java開發經驗的朋友都知道,對于基本數據類型,Java方法無法改變變量內容。那對自定義類的對象引用是否也不能修改內容呢?可以通過一個簡單的例子說明。代碼如下:

 

public class MyClass{    PRivate Object num;    public MyClass(Object num){        this.num=num;    }        public Object getNum() {        return num;    }    public void setNum(Object num) {        this.num = num;    }}

 

public class Main {        public static void change(MyClass myClass){        myClass.setNum(100);    }                public static void main(String[] args){        MyClass a=new MyClass(10);        System.out.println("調用change方法前的值為:"+a.getNum());        change(a);        System.out.println("調用change方法后的值為:"+a.getNum());    }    }

上面代碼執行輸出結果如下:

 

 

 

從結果中可以看出,change方法能夠修改對象的狀態。也就是說Java方法可以改變對象的參數狀態。那這是否意味著Java方法對于自定義的數據類型(自定義類)的參數采用的是引用傳遞?為了確認結果可以編寫個簡單例子,所有的自定義類仍然是上面的MyClass。代碼如下:

public static void swap(MyClass a,MyClass b){        MyClass tmp=a;        a=b;        b=tmp;    }        public static void main(String[] args){        MyClass a=new MyClass(10);        MyClass b=new MyClass(100);        System.out.println("交換之前a的值為:"+a.getNum());        System.out.println("交換之前b的值為:"+b.getNum());        swap(a,b);        System.out.println("交換之后a的值為:"+a.getNum());        System.out.println("交換之后b的值為:"+b.getNum());    }}

執行結果如下:

通過上面結果可以發現,Java方法對自定義類的參數傳遞使用的仍然是值傳遞,不是引用傳遞。那為什么Java方法能夠修改對象狀態呢?

可以考慮調用change方法的具體執行過程,從中尋找答案。

調用change方法事,具體的執行過程是:

  1. myClass被初始化成實參a的copy,這是對對象的引用。
  2. setNum方法應用于這個對象的引用。myClass和a同時引用的那個MyClass對象的num變為了100。
  3. 方法結束后,參數變量myClass不再使用。而a繼續引用那個num變為100的MyClass對象。如下圖所示。

所以,Java方法能夠實現改變對象參數狀態的原因是:方法得到的是對象引用的拷貝,對象引用及方法中的其他拷貝同時引用同一個對象。

現在,總結一下Java的方法參數使用:

  • 方法不能修改一個基本數據類型的參數;
  • 方法可以改變對象參數的狀態;
  • 方法不能讓對象參數引用一個新的對象(原因參考調用change方法時的具體執行過程)。

三、交換變量的數值

既然已經知其所以然,那么知其然就不是難事了。直接貼出我的個人代碼:

 

public static void swap(MyClass a,MyClass b){        Object tmp=a.getNum();        a.setNum(b.getNum());        b.setNum(tmp);}

 

執行結果如下:

交換有效。

參考文獻:Java核心技術 卷Ⅰ。

 


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
黑人巨大精品欧美一区二区三区| 97成人超碰免| 欧美成人在线影院| 青青草国产精品一区二区| 日韩av手机在线看| 懂色av中文一区二区三区天美| 国产成人精品视频| 久久久久久香蕉网| 国产做受高潮69| 亚洲欧美精品中文字幕在线| 日韩欧美在线免费| 免费av在线一区| 51ⅴ精品国产91久久久久久| 久久综合久久美利坚合众国| 欧美老肥婆性猛交视频| 日韩国产欧美精品在线| 精品国产福利视频| 九九精品在线播放| 日本韩国欧美精品大片卡二| 欧美午夜性色大片在线观看| 国产国语videosex另类| 国产91精品久| 这里只有精品久久| 91欧美激情另类亚洲| 97婷婷大伊香蕉精品视频| 欧美日韩在线视频观看| 精品国产自在精品国产浪潮| 在线观看亚洲视频| 日韩在线视频观看正片免费网站| 久久的精品视频| 国产原创欧美精品| 欧美日韩亚洲激情| 综合网中文字幕| 欧美日韩国产一中文字不卡| 91精品中国老女人| 成人羞羞国产免费| 亚洲欧洲自拍偷拍| 国产精品爽爽爽| 日本久久久久久久久久久| 欧美日韩在线第一页| 欧美日韩国产中字| 日韩在线观看高清| 亚洲国产精品久久91精品| 91视频-88av| 欧美丝袜一区二区三区| 91精品国产综合久久久久久蜜臀| 欧美福利视频在线| 精品亚洲一区二区三区| 亚洲成av人片在线观看香蕉| 亚洲欧美国产制服动漫| 亚洲欧美激情另类校园| 性欧美xxxx视频在线观看| 日韩av电影免费观看高清| 欧美日韩亚洲成人| 国产v综合v亚洲欧美久久| 久久久噜噜噜久久| 亚洲一区精品电影| 亚洲精品成人久久久| 亚洲视频一区二区三区| 亚洲精品福利资源站| 精品亚洲aⅴ在线观看| 美日韩丰满少妇在线观看| 欧美影院久久久| 美女视频黄免费的亚洲男人天堂| 久久91精品国产| 国产精品日韩欧美综合| 色老头一区二区三区在线观看| 人九九综合九九宗合| 久久综合国产精品台湾中文娱乐网| 久久精品久久久久久| 国产成人亚洲综合91精品| 91九色单男在线观看| 91沈先生在线观看| 一本一道久久a久久精品逆3p| 国内精品久久久久久中文字幕| 欧美激情免费视频| 国产精品久久久久久久午夜| 自拍偷拍亚洲欧美| 日本三级韩国三级久久| 欧美专区在线观看| 亚洲综合日韩在线| 亚洲精品一区二区网址| 欧美黄色片免费观看| 日韩亚洲欧美中文高清在线| 色爱av美腿丝袜综合粉嫩av| 国产精品igao视频| 国产精品电影久久久久电影网| 九九综合九九综合| 国产suv精品一区二区三区88区| 久久精品电影一区二区| 97色在线观看免费视频| 欧美性色19p| 亚洲人成亚洲人成在线观看| 日韩在线小视频| 中文字幕免费精品一区| 国产精品久久久久久久久| 国产自产女人91一区在线观看| 国产a级全部精品| 亚洲综合中文字幕68页| 亚洲第一网站免费视频| 亚洲精品美女视频| 狠狠躁18三区二区一区| 国产精品自拍偷拍视频| 国产精品男人爽免费视频1| 国产国语videosex另类| 欧美黑人一区二区三区| 午夜精品国产精品大乳美女| 最近更新的2019中文字幕| 欧亚精品在线观看| 国产精品视频区1| 亚洲色在线视频| 97精品一区二区三区| 欧美极品少妇xxxxx| 久久在线免费视频| 国产精品视频最多的网站| 韩日精品中文字幕| 国产91久久婷婷一区二区| 97成人精品视频在线观看| 亚洲永久免费观看| 欧美国产极速在线| 日韩av免费在线观看| 欧美激情一区二区三区成人| 欧美日韩在线视频首页| 欧美高清不卡在线| 亚洲国产中文字幕在线观看| 成人免费视频xnxx.com| 日韩在线免费高清视频| 在线播放日韩精品| 国产极品精品在线观看| 国产成人精品一区二区在线| 欧美一级高清免费播放| 91精品国产91久久久久久久久| 热久久这里只有精品| 日韩电影中文字幕在线观看| 亚洲一区亚洲二区亚洲三区| 国产精品福利无圣光在线一区| 欧洲美女7788成人免费视频| 91精品免费久久久久久久久| 亚洲精品99久久久久中文字幕| 日韩美女在线观看一区| 欧美国产日韩免费| 久久久久久国产精品久久| 欧美成人免费va影院高清| 欧美色videos| 久久国产精品偷| 欧美精品aaa| 久久国产精品久久国产精品| 国产日韩精品一区二区| 九九久久久久99精品| 久久久久久久影视| 国产欧美日韩综合精品| 欧美视频国产精品| 国产精品视频一区国模私拍| 国产精品一区二区三区在线播放| 欧美最猛性xxxx| 国产成人亚洲综合91| 精品欧美激情精品一区| 欧美一级在线播放| 中文字幕亚洲欧美在线| 91成人国产在线观看| 亚洲毛片在线免费观看| 亚洲国产一区二区三区四区| 国产精品av免费在线观看| 欧美俄罗斯乱妇|