詳解Java語言中的參數傳遞
導語:和其它程序設計語言類似,Java語言的參數傳遞也分爲兩種,下面就由小編爲大家介紹一下詳解Java語言中的參數傳遞,希望對大家有所幫助!
1.按值傳遞(by value)
適用範圍:8種基本數據類型、String對象
特點:在內存中複製一份數據,把複製後的數據傳遞到方法內部
作用:在方法內部改變參數的值,外部數據不會跟着發生改變
2.按址傳遞(by address)
適用範圍:數組、除String以外的其他所有類型的對象
特點:將對象的地址傳遞到方法內部
作用:在方法內部修改對象的內容,外部數據也會跟着發生改變
基礎示例代碼:
public class Test1{
public static void t1(int n){
n = 10;
}
public static void t2(String s){
s = "123";
}
public static void t3(int array){
array[0] = 2;
}
public static void main(String args){
int m = 5;
1(m);
tln(m);
String s1 = "abc";
t2(s1);
tln(s1);
int arr = {1,2,3,4};
t3(arr);
tln(arr[0]);
}
}
按照上面的參數傳遞規則,該代碼的輸出結果應該是:5 abc 2.因爲int類型是按值傳遞,所以把參數m傳遞到方法t1時,相當於又複製了一份m的值,在方法t1內部修改的是複製後的值,所以m的值不變,s1的輸出和m類似。而arr是數組,屬於按址傳遞,也就是把arr的地址傳遞到了方法t3內部,在方法t3內部修改數組中的值時,原來的內容也發生改變。|||
以上特性是Java語言中的規定,在語法上無法指定參數傳遞是按值傳遞還是按址傳遞,但是可以通過下面的`變換實現:
1.對於按值傳遞的參數,如果需要在方法調用以後修改參數的值,可以利用返回值來實現;對於按值傳遞的參數,如果需要在方法內部修改時原來的參數不改變,則可以在方法內部重新創建該對象實現。
示例代碼
public class Test2{
public static int t1(int n){
n = 10;
return n;
}
public static String t2(String s){
s = "123";
return s;
}
public static void t3(int array){
//創建新的數組並賦值
int newArray = new int[th];
//數據拷貝
ycopy(array,0,newArray,0,th);
newArray[0] = 2;
}
public static void main(String args){
int m = 5;
//重新賦值
m = t1(m);
tln(m);
String s1 = "abc";
//重新賦值
s1 = t2(s1);
tln(s1);
int arr = {1,2,3,4};
t3(arr);
tln(arr[0]);
}
}
這樣,程序的輸出結果就將是:10 123 1.
在實際的程序開發中,可以根據需要使用類似的結構來進行實現。
下面再介紹一個參數傳遞的常見應用,利用參數傳遞實現返回值,這樣的功能在IO類設計的read方法中大量使用。
示例代碼
public class Test3{
public static void initArray(int array){
for(int i = 0;i < th;i++){
array[i] = i;
}
}
public static void main(String args){
int a = new int[10];
initArray(a);
for(int i = 0;i < th;i++){
tln(a[i]);
}
}
}
在該示例代碼中,在initArray方法內部修改了數組的值以後,外部數組a的值也會發生改變,間接實現了返回值的效果。當然,在該示例代碼中,因爲只返回一個參數,所以作用體現的不明顯,如果需要返回多個參數時,使用按址傳遞是一種不錯的主意。
相關文章
-
詳解Java語言中的參數傳遞大綱
當我們受到啓發,對生活有了新的感悟時,好好地寫一份心得體會,這樣就可以總結出具體的經驗和想法。你想好怎麼寫心得體會了嗎?下面是小編爲大家整理的體育教師讀書心得,歡迎閱讀與收藏。體育教師讀書心得1觀看了央視的《百 -
JAVA語言中的參數傳遞
導語:在程序設計中,C語言或者C++語言的一些參數傳值或者地址都十分明確,但是在JAVA中還存在着一些爭論,甚至有所謂的結論認爲:在JAVA裏參數傳遞是按值傳遞。下面就由小編爲大家介紹一下JAVA語言中的參數傳遞,歡迎大家閱讀! -
java語言參數傳遞介紹
光陰似箭,時光如白駒過隙般,轉眼間又是學期末。在學生會也工作一學期了,站在學期末,透視在學習中心工作的這一學期裏,回顧工作的點點滴滴。回眸過去的一幕幕,些許感動,些許充實。似乎初進學生會記憶依然在心頭展現,學期開始抱 -
Java語言中方法之間數據傳遞的探討
導語:在面向對象的Java語言中,方法是處理數據的基本模塊,方法之間的數據傳遞是掌握編程方法的關鍵。下面就由小編爲大家介紹一下Java語言中方法之間數據傳遞的探討,歡迎大家閱讀! 1問題的提出在面向對象的Java語言中,類 -
java通過值傳遞參數的方法是什麼
在 Java 應用程序中永遠不會傳遞對象,而只傳遞對象引用。因此是按引用傳遞對象。Java 應用程序按引用傳遞對象這一事實並不意味着 Java 應用程序按引用傳遞參數。以下是小編爲大家搜索整理的java通過值傳遞參數的方法 -
詳解Java中的迭代和遞歸
本文是本站小編搜索整理的關於Java中的迭代和遞歸,文章顯示分別介紹了Java中的迭代和遞歸,而後又介紹了迭代和遞歸的區別以及數形遞歸的相關內容,感興趣的小夥伴們可以參考一下!想了解更多相關信息請持續關注我們應屆畢 -
JavaScript如何獲取地址欄中傳遞參數
導語:JavaScript如何獲取地址欄中傳遞參數,通過下面的閱讀你會有所收穫,跟着小編一起來了解一下吧。 第一種:正則匹配法這種方法其實原理和上一種方法類似,都是從URL中提取,只是提取的方法不同而已。function GetQuerySt -
java與javascript之間json格式數據互轉詳解
6月21日,江西永新縣發生一起多人圍毆女生事件,受到網友廣泛關注。6月24日上午,中國江西網記者最新獲悉,部分打人者家長向被打女生黃某道歉,涉案人員劉某(視頻中穿白色衣服的女生)已刑拘。江西永新女國中生打人事件網友人肉結 -
網頁開發中JavaScript傳遞參數方法比較
導語:在開發網頁時,前臺後臺的數據交互是常有問題,下面小編給大家提供了網頁開發中JavaScript傳遞參數方法比較,大家可以參考閱讀,更多詳情請關注應屆畢業生考試網。1、通過或者進行傳遞,比如="在這個例子中所攜帶的參數即 -
Java Ajax jsonp跨域請求詳解
怎樣用java代碼發起ajax 的jsonp並得到返回數據? 以下是本站小編搜索整理的關於Java Ajax jsonp跨域請求詳解,感興趣的小夥伴們可以參考一下!想了解更多相關信息請持續關注我們應屆畢業生考試網! 1、什麼是JSONP一