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

Java中的參數(shù)傳遞詳細(xì)介紹

 更新時(shí)間:2022年01月02日 10:27:29   作者:Dtruth  
大家好,本篇文章主要講的是Java中的參數(shù)傳遞詳解,感興趣的同學(xué)趕快來(lái)看一看吧,對(duì)你有幫助的話記得收藏一下,方便下次瀏覽

前言

Java中的參數(shù)傳遞:分為值傳遞引用傳遞
但本質(zhì)上,Java中只有值傳遞。引用傳遞,其實(shí)可以理解為傳的是類似指針的東西。
值傳遞就是把基本變量的值拷貝一份,傳遞這個(gè)拷貝。引用傳遞則是傳遞的引用的地址,也就是該變量在內(nèi)存空間的地址。

1.值傳遞

只有基本數(shù)據(jù)類型采用值傳遞,特點(diǎn)是傳遞的是值的拷貝,傳遞完后兩者就沒(méi)有關(guān)系了。也就是說(shuō)方法內(nèi)和方法外的值互不相干

基本數(shù)據(jù)類型:
·整型:int,long,byte,short
浮點(diǎn)型:float,double
字符型:char
布爾型:boolean
注:8種基本數(shù)據(jù)類型以外的數(shù)據(jù)類型都為引用類型。

2.引用傳遞

指的是在方法調(diào)用時(shí),傳遞的參數(shù)是按引用進(jìn)行傳遞,其實(shí)傳遞的引用的地址,也就是變量所對(duì)應(yīng)的內(nèi)存空間的地址。
傳遞的是一個(gè)拷貝,即副本。也就是說(shuō),對(duì)于一個(gè)參數(shù)傳遞,存在兩個(gè)地址指向同一個(gè)內(nèi)存空間。這里我們可以用內(nèi)存分配示意圖來(lái)體現(xiàn)

3.String類型傳遞

先說(shuō)結(jié)論,String類型傳遞與基本數(shù)據(jù)類型的傳遞效果相似。
 

說(shuō)明:
String類對(duì)象一旦創(chuàng)建,其內(nèi)容不可更改:
String類的所有方法都不會(huì)改變String類對(duì)象內(nèi)容,要改變String類對(duì)象的值就必須創(chuàng)建一個(gè)新的String對(duì)象。
也就是說(shuō),當(dāng)進(jìn)行參數(shù)傳遞時(shí),如果方法內(nèi)對(duì)String類對(duì)象的值進(jìn)行了修改,那么實(shí)際上是創(chuàng)建了一個(gè)新的String類對(duì)象,然后讓原來(lái)的變量指向它而已。但是這個(gè)“原來(lái)的變量”是一份拷貝副本,只是一開(kāi)始創(chuàng)建的時(shí)候與主方法中的傳遞的值相同而已,現(xiàn)在改變之后,兩者就毫無(wú)關(guān)系了。

在這里插入圖片描述

4.舉例

1)代碼

public class TestTransOfValue 
{public static void main(String args[])
 { double val;
	StringBuffer sb1, sb2;
	String sb3;
	char s[]={'a','p','p','l','e'};
	val = 5.8;
	sb1 = new StringBuffer("apples");
	sb2=new StringBuffer("pears");
	sb3 = new String("pear");
	modify(val, sb1, sb2,sb3,s);
	System.out.println(val);
	System.out.println(sb1);
	System.out.println(sb2);
	System.out.println(sb3);
	System.out.println(s);
}
public static void modify(double a, StringBuffer r1,
			             StringBuffer r2,String r3,char s[] )
  { a = 6.8;  
    r1.append(" taste good");
    r2=null;
    r3="banana";
    s[2]='R';       }
}

2)運(yùn)行結(jié)果
5.8
apples taste good
pears
pear
apRle

3)解釋:
①val是基本數(shù)據(jù)類型,值拷貝的兩者直接互不影響。所以modify方法內(nèi)對(duì)a的操作不影響主方法的val的值 因此val=5.8
②sb1為StringBuffer型,不屬于基本類型,因此是引用傳遞。r1.append()修改了r1地址對(duì)應(yīng)的內(nèi)存空間的值,因此sb1的值改變了
③sb2同樣是StringBuffer型,屬于引用傳遞。但r2=null是修改的r2的地址的值而不是r2地址指向的內(nèi)存空間的值,因此sb2指向的還是原來(lái)指向的內(nèi)存空間,且內(nèi)存空間的值未被改變。
④sb3為String類型,屬于引用傳遞。但是String類型是一個(gè)特殊的類,在方法內(nèi)改變String的值并不能改變主方法中的String的值,因此String仍然是pear
⑤char數(shù)組為引用傳遞,且s[2]=‘R’,確實(shí)修改的是內(nèi)存空間的值,因此char數(shù)組的值被改變

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

總結(jié)

到此這篇關(guān)于Java中的參數(shù)傳遞詳解的文章就介紹到這了,更多相關(guān)Java參數(shù)傳遞內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • java通過(guò)MySQL驅(qū)動(dòng)攔截器實(shí)現(xiàn)執(zhí)行sql耗時(shí)計(jì)算

    java通過(guò)MySQL驅(qū)動(dòng)攔截器實(shí)現(xiàn)執(zhí)行sql耗時(shí)計(jì)算

    本文主要介紹了java通過(guò)MySQL驅(qū)動(dòng)攔截器實(shí)現(xiàn)執(zhí)行sql耗時(shí)計(jì)算,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-03-03
  • Java虛擬機(jī)調(diào)用Java主類的main()方法

    Java虛擬機(jī)調(diào)用Java主類的main()方法

    這篇文章主要介紹了Java虛擬機(jī)調(diào)用Java主類的main()方法,前一篇文章我們介紹了關(guān)于Java虛擬機(jī)HotSpot
    2021-11-11
  • Spring中@Conditional注解用法詳解

    Spring中@Conditional注解用法詳解

    這篇文章主要介紹了Spring中@Conditional注解用法詳解,@Conditional是Spring4版本新提供的一種注解,它的作用是按照設(shè)定的條件進(jìn)行判斷,把滿足判斷條件的bean注冊(cè)到Spring容器,需要的朋友可以參考下
    2023-11-11
  • 在Java編程中使用正則表達(dá)式

    在Java編程中使用正則表達(dá)式

    這篇文章主要介紹了在Java編程中使用正則表達(dá)式,注意使用matches()方法檢測(cè)一下Java對(duì)正則表達(dá)式的支持情況,需要的朋友可以參考下
    2015-08-08
  • Java中Redis的布隆過(guò)濾器詳解

    Java中Redis的布隆過(guò)濾器詳解

    這篇文章主要介紹了Java中Redis的布隆過(guò)濾器詳解,我們經(jīng)常會(huì)把一部分?jǐn)?shù)據(jù)放在Redis等緩存,比如產(chǎn)品詳情,這樣有查詢請(qǐng)求進(jìn)來(lái),我們可以根據(jù)產(chǎn)品Id直接去緩存中取數(shù)據(jù),而不用讀取數(shù)據(jù)庫(kù),這是提升性能最簡(jiǎn)單,最普遍,也是最有效的做法,需要的朋友可以參考下
    2023-09-09
  • java @interface 注解詳解及實(shí)例

    java @interface 注解詳解及實(shí)例

    這篇文章主要介紹了java @interface 注解詳解及實(shí)例的相關(guān)資料,需要的朋友可以參考下
    2017-06-06
  • Springboot實(shí)現(xiàn)多文件上傳代碼解析

    Springboot實(shí)現(xiàn)多文件上傳代碼解析

    這篇文章主要介紹了Springboot實(shí)現(xiàn)多文件上傳代碼解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-04-04
  • 解析Spring Boot內(nèi)嵌tomcat關(guān)于getServletContext().getRealPath獲取得到臨時(shí)路徑的問(wèn)題

    解析Spring Boot內(nèi)嵌tomcat關(guān)于getServletContext().getRealPath獲取得到臨時(shí)

    大家都很糾結(jié)這個(gè)問(wèn)題在使用getServletContext().getRealPath()得到的是臨時(shí)文件的路徑,每次重啟服務(wù),這個(gè)臨時(shí)文件的路徑還好變更,下面小編通過(guò)本文給大家分享Spring Boot內(nèi)嵌tomcat關(guān)于getServletContext().getRealPath獲取得到臨時(shí)路徑的問(wèn)題,一起看看吧
    2021-05-05
  • 關(guān)于Java中byte[]?和?String互相轉(zhuǎn)換問(wèn)題

    關(guān)于Java中byte[]?和?String互相轉(zhuǎn)換問(wèn)題

    這篇文章主要介紹了Java中byte[]?和?String互相轉(zhuǎn)換問(wèn)題,通過(guò)用例給大家介紹了通過(guò)String類將String轉(zhuǎn)換成byte[]或者byte[]轉(zhuǎn)換成String,具體實(shí)例代碼跟隨小編一起看看吧
    2022-01-01
  • Java設(shè)計(jì)模式之策略模式_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理

    Java設(shè)計(jì)模式之策略模式_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理

    策略模式是對(duì)算法的封裝,把一系列的算法分別封裝到對(duì)應(yīng)的類中,并且這些類實(shí)現(xiàn)相同的接口,相互之間可以替換。接下來(lái)通過(guò)本文給大家分享Java設(shè)計(jì)模式之策略模式,感興趣的朋友一起看看吧
    2017-08-08

最新評(píng)論