本篇內(nèi)容介紹了“怎么理解java中值傳遞與引用傳遞”的有關(guān)知識(shí),在實(shí)際案例的操作過程中,不少人都會(huì)遇到這樣的困境,接下來就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!
創(chuàng)新互聯(lián)是專業(yè)的尼元陽網(wǎng)站建設(shè)公司,尼元陽接單;提供網(wǎng)站設(shè)計(jì)制作、網(wǎng)站設(shè)計(jì),網(wǎng)頁設(shè)計(jì),網(wǎng)站設(shè)計(jì),建網(wǎng)站,PHP網(wǎng)站建設(shè)等專業(yè)做網(wǎng)站服務(wù);采用PHP框架,可快速的進(jìn)行尼元陽網(wǎng)站開發(fā)網(wǎng)頁制作和功能擴(kuò)展;專業(yè)做搜索引擎喜愛的網(wǎng)站,專業(yè)的做網(wǎng)站團(tuán)隊(duì),希望更多企業(yè)前來合作!值傳遞
在方法的調(diào)用過程中,實(shí)參把它的實(shí)際值傳遞給形參,此傳遞過程就是將實(shí)參的值復(fù)制一份傳遞到函數(shù)中,這樣如果在函數(shù)中對(duì)該值(形參的值)進(jìn)行了操作將不會(huì)影響實(shí)參的值。因?yàn)槭侵苯訌?fù)制,所以這種方式在傳遞大量數(shù)據(jù)時(shí),運(yùn)行效率會(huì)特別低下。
當(dāng)把java的基本類型作為參數(shù)傳給函數(shù)體時(shí),傳入的參數(shù)在函數(shù)體內(nèi)部變成了局部變量,這個(gè)局部變量是輸入?yún)?shù)的一個(gè)拷貝。所有的函數(shù)體內(nèi)部的操作執(zhí)行結(jié)束后,這個(gè)局部變量也就完成了它的使命,它不影響作為參數(shù)的變量。
引用傳遞
引用傳遞彌補(bǔ)了值傳遞的不足,如果傳遞的數(shù)據(jù)量很大,直接復(fù)過去的話,會(huì)占用大量的內(nèi)存空間,而引用傳遞就是將對(duì)象的地址值傳遞過去,函數(shù)接收的是原始值的首地址值。在方法的執(zhí)行過程中,形參和實(shí)參的內(nèi)容相同,指向同一塊內(nèi)存地址,也就是說操作的其實(shí)都是源數(shù)據(jù),所以方法的執(zhí)行將會(huì)影響到實(shí)際對(duì)象。
java中用對(duì)象作為入口參數(shù)的傳遞缺省為“引用傳遞”,僅僅傳遞了對(duì)象的一個(gè)引用。當(dāng)函數(shù)體內(nèi)部對(duì)輸入變量改變時(shí),實(shí)質(zhì)上就是在對(duì)這個(gè)對(duì)象的直接操作。
值傳遞例子:
public static void main(String[] args) {
int num1 = 10;
int num2 = 20;
swap(num1, num2);
System.out.println("num1 = " + num1);//10
System.out.println("num2 = " + num2);//20
}
public static void swap(int a, int b) {
int temp = a;
a = b;
b = temp;
System.out.println("a = " + a);//20
System.out.println("b = " + b);//10
}
應(yīng)用傳遞例子:
public static void main(String[] args) {
int[] arr = {1,2,3,4,5};
change(arr);
System.out.println(arr[0]);//0
}
//將數(shù)組的第一個(gè)元素變?yōu)?
public static void change(int[] array) {
int len = array.length;
array[0] = 0;
}
“怎么理解java中值傳遞與引用傳遞”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識(shí)可以關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實(shí)用文章!