国产激情自拍_国产9色视频_丁香花在线电影小说观看 _久久久久国产精品嫩草影院

首頁 > 開發 > Java > 正文

解析java基本數據類型傳遞與引用傳遞區別

2024-07-14 08:43:50
字體:
來源:轉載
供稿:網友

java中方法參數傳遞方式是按值傳遞。
如果參數是基本類型,傳遞的是基本類型的字面量值的拷貝。
如果參數是引用類型,傳遞的是該參量所引用的對象在堆中地址值的拷貝。

java的值傳遞和引用傳遞在面試中一般都會都被涉及到,今天我們就來聊聊這個問題,首先我們必須認識到這個問題一般是相對函數而言的,也就是java中的方法參數,那么我們先來回顧一下在程序設計語言中有關參數傳遞給方法(或函數)的兩個專業術語:

按值調用(call by value)

按引用調用(call by reference)

所謂的按值調用表示方法接收的是調用著提供的值,而按引用調用則表示方法接收的是調用者提供的變量地址(如果是C語言的話來說就是指針啦,當然java并沒有指針的概念)。這里我們需要注意的是一個方法可以修改傳遞引用所對應的變量值,而不能修改傳遞值調用所對應的變量值,這句話相當重要,這是按值調用與引用調用的根本區別,當然如果還不理解,沒關系,下面就要圖文并茂的徹底分析啦。

前面我們說過java中并不存在引用調用,這點是沒錯的,因為java程序設計語言確實是采用了按值調用,即call by value。也就是說方法得到的是所有參數值的一個拷貝,方法并不能修改傳遞給它的任何參數變量的內容。下面我們來看一個例子:

package com.zejian.test;/** * java中的按值調用 * @author zejian */public class CallByValue {		private static int x=10;		public static void updateValue(int value){		value = 3 * value;	}		public static void main(String[] args) {		System.out.println("調用前x的值:"+x);		updateValue(x);		System.out.println("調用后x的值:"+x);	}

運行程序,結果如下:

調用前x的值:10
調用后x的值:10

 可以看到x的值并沒有變化,接下來我們一起來看一下具體的執行過程:

java,數據類型傳遞,引用傳遞

分析:

1)value被初始化為x值的一個拷貝(也就是10)

2)value被乘以3后等于30,但注意此時x的值仍為10!

3)這個方法結束后,參數變量value不再使用,被回收。

結論:當傳遞方法參數類型為基本數據類型(數字以及布爾值)時,一個方法是不可能修改一個基本數據類型的參數。

當然java中除了基本數據類型還有引用數據類型,也就是對象引用,那么對于這種數據類型又是怎么樣的情況呢?我們還是一樣先來看一個例子:

聲明一個User對象類型:

執行類如下:

package com.zejian.test;public class User {	private String name;	private int age;	public User(String name, int age) {		this.name=name;		this.age=age;	}	public String getName() {		return name;	}	public void setName(String name) {		this.name = name;	}	public int getAge() {		return age;	}	public void setAge(int age) {		this.age = age;	}

執行類如下:

package com.zejian.test;/** * java中的按值調用 * @author zejian */public class CallByValue {	private static User user=null;	public static void updateUser(User student){		student.setName("Lishen");		student.setAge(18);	}			public static void main(String[] args) {		user = new User("zhangsan",26);		System.out.println("調用前user的值:"+user.toString());		updateUser(user);		System.out.println("調用后user的值:"+user.toString());	}

運行結果如下:

調用前user的值:User [name=zhangsan, age=26]
調用后user的值:User [name=Lishen, age=18]

很顯然,User的值被改變了,也就是說方法參數類型如果是引用類型的話,引用類型對應的值將會被修改,下面我們來分析一下這個過程:

java,數據類型傳遞,引用傳遞

過程分析:

1)student變量被初始化為user值的拷貝,這里是一個對象的引用。

2)調用student變量的set方法作用在這個引用對象上,user和student同時引用的User對象內部值被修改。

3)方法結束后,student變量不再使用,被釋放,而user還是沒有變,依然指向User對象。

結論:當傳遞方法參數類型為引用數據類型時,一個方法將修改一個引用數據類型的參數所指向對象的值。

雖然到這里兩個數據類型的傳遞都分析完了,也明白的基本數據類型的傳遞和引用數據類型的傳遞區別,前者將不會修改原數據的值,而后者將會修改引用所指向對象的值。可通過上面的實例我們可能就會覺得java同時擁有按值調用和按引用調用啊,可惜的是這樣的理解是有誤導性的,雖然上面引用傳遞表面上體現了按引用調用現象,但是java中確實只有按值調用而沒有按引用調用。到這里估計不少人都蒙逼了,下面我們通過一個反例來說明(回憶一下開頭我們所說明的按值調用與按引用調用的根本區別)。

package com.zejian.test;/** * java中的按值調用 * @author zejian */public class CallByValue {	private static User user=null;	private static User stu=null;		/**	 * 交換兩個對象	 * @param x	 * @param y	 */	public static void swap(User x,User y){		User temp =x;		x=y;		y=temp;	}			public static void main(String[] args) {		user = new User("user",26);		stu = new User("stu",18);		System.out.println("調用前user的值:"+user.toString());		System.out.println("調用前stu的值:"+stu.toString());		swap(user,stu);		System.out.println("調用后user的值:"+user.toString());		System.out.println("調用后stu的值:"+stu.toString());	}}

我們通過一個swap函數來交換兩個變量user和stu的值,在前面我們說過,如果是按引用調用那么一個方法可以修改傳遞引用所對應的變量值,也就是說如果java是按引用調用的話,那么swap方法將能夠實現數據的交換,而實際運行結果是:

調用前user的值:User [name=user, age=26]
調用前stu的值:  User [name=stu, age=18]
調用后user的值:User [name=user, age=26]
調用后stu的值:  User [name=stu, age=18]

我們發現user和stu的值并沒有發生變化,也就是方法并沒有改變存儲在變量user和stu中的對象引用。swap方法的參數x和y被初始化為兩個對象引用的拷貝,這個方法交換的是這兩個拷貝的值而已,最終,所做的事都是白費力氣罷了。在方法結束后x,y將被丟棄,而原來的變量user和stu仍然引用這個方法調用之前所引用的對象。

java,數據類型傳遞,引用傳遞

這個過程也充分說明了java程序設計語言對對象采用的不是引用調用,實際上是對象引用進行的是值傳遞,當然在這里我們可以簡單理解為這就是按值調用和引用調用的區別,而且必須明白即使java函數在傳遞引用數據類型時,也只是拷貝了引用的值罷了,之所以能修改引用數據是因為它們同時指向了一個對象,但這仍然是按值調用而不是引用調用。

總結:

一個方法不能修改一個基本數據類型的參數(數值型和布爾型)。

一個方法可以修改一個引用所指向的對象狀態,但這仍然是按值調用而非引用調用。

上面兩種傳遞都進行了值拷貝的過程。

以上所述是小編給大家介紹的java基本數據類型傳遞與引用傳遞區別詳解整合,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對VeVb武林網網站的支持!


注:相關教程知識閱讀請移步到JAVA教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
国产激情自拍_国产9色视频_丁香花在线电影小说观看 _久久久久国产精品嫩草影院
日本在线免费中文字幕| 中文字幕在线免费| 中文字幕在线观看av| 牛牛精品视频在线| 大香伊人久久| 国产三级在线| 在线视频99| 狠狠综合久久久综合| av在线免费播放网站| 性色视频在线| 最好看更新中文字幕| 999福利在线视频| 青青草原av在线| 国产精品综合久久久久| 国产精品777一区二区| 国产高清在线观看| 热99re久久精品这里都是免费| 九九热视频精品在线观看| 国产精品秘入口| 免费在线播放av| 国产特黄在线| 在线免费黄色毛片| 天堂中文字幕在线| 国产精品免费91| 麻豆精品免费视频入口| 精品国产免费观看一区| 成人免费一区二区三区视频网站| 国产成人精品综合网站| 成年午夜在线| а√天堂www在线а√天堂视频| 国产日韩精品在线看| 九九热免费在线视频| 在线观看免费高清完整| 国产小视频在线观看| 日本久久网站| 精品视频麻豆入口| 国产精品视频福利一区二区| 久久精品蜜桃| 亚洲成人av高清| 国产高清一区二区三区视频| 国产久草在线| 粉嫩av一区| 国产中文字幕av| av文字幕在线观看| 在线中文av| 在线观看av网站永久| 伊人精品影院| 在线a人片免费观看视频| 精品电影在线| 日本在线观看| 青娱乐在线视频观看| www.九九热.com| 黄色国产在线| 国产麻豆精品高清在线播放| 开心婷婷激情| 中文字幕在线视频不卡| 中文字幕久热在线精品| 中文字幕免费中文| 中文资源在线网| 思思99精品视频在线观看| 波多野结衣久久高清免费| 老师我好爽再深一点的视频| 国产麻豆精品高清在线播放| 国产丝袜精品丝袜| 永久免费在线观看| 麻豆国产视频| 中文字幕不卡| 99久久国产视频| 小说区乱图片区| 国产精品一区二区三区高清在线 | 日本三级在线视频| 老司机精品视频一区二区| 国产一区在线视频观看| 国产人成网在线播放va免费| 精品一区二区在线欧美| 久久久久久77777| 国产精品视频白浆合集| 欧美视频免费一区二区三区| 最近久乱中文字幕| 欧美大交乱xxxx| 国产精品18久久久久网站| av在线电影观看| 国产日产精品久久久久久婷婷| av激情在线| 国产三级在线| 国产资源在线看| 欧美色第一页| 亚洲wwwwww| 中文乱码字幕高清在线观看| 午夜国产福利在线| 免费a级在线播放| 在线观看的av| 精品伦理一区二区| 国产人成在线视频| 国产一级又黄| 另类高清dbsm日本tvav| 中文字幕av高清| 国产精品被窝福利一区 | 中文字幕在线影视资源| av在线不卡播放| 在线观看av网站| 在线国产福利网站| 亚洲视频精品在线观看| 一本久久精品| 天堂中文在线观看| h网站免费在线观看| 四虎国产精品永久在线| 亚洲激情丁香| 亚洲午夜久久久久中文字幕| 精品国产一区二区三区不卡在线 | 国产私拍精品| 国产一区二区影视| 国产一级二级三级在线观看| 国产一卡2卡3卡4卡网站免费| 国产在线视频自拍| 国产一区电影| 一级二级三级在线观看| 操人视频91| 中文字幕在线观看av| 国产娇喘精品一区二区三区图片| 国产一级大片| 国产精品久久久久久福利| 国产福利小视频在线| 9色在线视频网站| 天堂中文在线观看| 国产免费黄网站| 国产黄大片在线观看画质优化| 99爱视频在线观看| 成人精品一区二区三区免费| 国产午夜视频在线观看| 亚洲人在线播放| 国产网站观看9久| 四虎一区二区三区| 国产精品久久久久久福利| av片在线观看| 国产日韩欧美精品一区二区三区| 国产a国产a国产a| 丁香花视频在线观看| 永久免费在线观看| 国产亚av手机在线观看| 欧美精品一区二区三区免费| 91九色在线看| 国产色a在线观看| 国产永久免费高清在线观看视频| 中文字幕2019第三页| 最近免费中文字幕在线第一页| av男人的天堂网| 国产精品国产三级国产试看| 玖玖在线视频| av中文在线| 在线观看精品视频一区二区三区| 国产嫩草在线视频| 黄色av电影在线播放| www.狠狠色.com| 亚洲精品一区中文字幕电影| 国产白浆在线| 国产极品美女到高潮| 国产一区电影| 日本中文字幕在线视频| 久久精品亚洲7777影院| 日本不卡影院| www.狠狠插| 九九热视频在线观看| 超碰国产在线观看| 日本视频一二三区中文字幕| 夜夜嗨yeyeh| 精品99又大又爽又硬少妇毛片 | 国产精品视频白浆合集| 国产尤物一区二区三区| 国产在线高潮| 国产偷窥洗澡视频| 国产叼嘿网站免费观看不用充会员 | 亚洲精品自拍区在线观看| 精精国产xxxx视频在线动漫| 91涩漫在线观看c| 亚洲欧美日韩成人网| 在线免费观看黄色av| 伊人电影在线观看| www.xxx黄| 成人免费一区二区三区视频网站| 国产男女av| 国产不卡在线| 欧美日韩视频精品一区二区| 久草在线资源福利| 成人午夜无人区一区二区| 国产一二三区在线观看| a√在线视频| 黄色毛片在线| 国产成人精品久久一区二区小说 | 九九视频在线播放| 国产一区二区三区四区尤物| 国产区视频在线观看| 99在线视频观看| 黄色国产网站在线播放| 国产成人夜间影院在线观看| www.夜夜操| 国产对白叫床清晰在线播放| 久久久久久国产视频| 国产porny蝌蚪视频| 国产在线观看色|