詳解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的值也會發生改變,間接實現了返回值的效果。當然,在該示例代碼中,因為只返回一個參數,所以作用體現的不明顯,如果需要返回多個參數時,使用按址傳遞是一種不錯的主意。
-
2017計算機應用基礎題「附答案」
一、單選題1、計算機可分為數字計算機、模擬計算機和混合計算機,這種分類是依據______。A:功能和用途B:性能和規律C:處理數據的方式D:使用範圍答案:C評析:此題沒有評析2、自計算機問世至今已經經歷了四個時代,劃分時代的主要依據是計算機的______。A:規模B:功能C:性能D:構...
-
2017計算機職稱考試選擇題庫及答案
一、選擇題1Excel2000廣泛應用於(A)。A.統計分析、財務管理分析、股票分析和經濟、行政管理等各個方面B.工業設計、機械製造、建築工程C.美術設計、裝璜、圖片製作等各個方面D.多媒體制作2Excel2000是屬於下面哪套軟件中的一部分(B)。A.Windows2000B.Microsoft...
-
計算機輸出設備有哪些
硬件設備又分為輸入設備和輸出設備,今天,小編就着重的為大家介紹一下計算機的輸出設備都是由哪些以及它們的功能作用都是什麼。輸出設備輸出設備(OutputDevice)是計算機硬件系統的終端設備,用於接收計算機數據的輸出顯示、打印、聲音、控制外圍設備操作等。也是把...
-
管理磁盤diskpart命令
很多時候,我們需要對磁盤進行諸如創建分區、轉換分區表格式、格式化、擴展卷等操作,尤其你在一台安裝了全新的硬盤的電腦上安裝windows的時候,磁盤管理操作顯得更加必要。通常,人們會使用第三方WindowsPE啟動盤當中附帶的可視化磁盤管理軟件來管理磁盤,然而,刻錄第三...