Java 傳參的方法---值傳遞
Java 使用按值傳遞的方式將實參傳遞給方法。同時傳遞基本數據類型變量的值與傳遞引用數據類型的值有很大的不同。接下來我將舉例說明。
java傳參過程:
調用方法時,把實參傳遞給形參,在方法內部使用形參(實參 ——>形參 傳的永遠是地址)
基本數據類型包括:整型、浮點型、字符型、布爾型
引用數據類型包括:接口、類、數組
基本數據類型按值傳參:傳的是就是常量本身,而常量在常量池中有固有的地址,所以實質上基本數據類型傳參傳的是就是常量在常量池中的地址,
引用數據類型按值傳參:傳的是對象的值,而對象的值就是地址,所以實質上引用數據類型傳參傳的就是對象在堆內存中的地址
class test{
public static void main(String[] args){
int c=3;
int d=7;
System.out.println("交換前"+c+","+d);
swap(c,d);
System.out.println("swap交換後"+c+","+d);
int [] a = {3,7};
System.out.println("交換前"+a[0]+","+a[1]);
swap(a[0],a[1]);
System.out.println("swap交換後"+a[0]+","+a[1]);
System.out.println("交換前"+a[0]+","+a[1]);
swapArr(a);
System.out.println("swapArr交換後"+a[0]+","+a[1]);
}
public static void swapArr(int[] array){//參數爲引用數據類型
int temp = array[0];
array[0] = array[1];
array[1] = temp;
}
public static void swap(int n1, int n2){//參數爲基本數據類型
int temp = n1;
n1 = n2;
n2 =temp;
}
}
總結:
基本數據類型:你買了一瓶水a(形參),你朋友也買了一瓶水b(實參),你把你的水喝掉了,並不影響你朋友瓶子裏的水,即當使用基本數據類型作爲方法的形參時,在方法體中對形參的修改不會影響到實參的數值
引用數據類型:你和你朋友共同買了一瓶水(這瓶水既扮演了形參又扮演了實參),你把水喝掉了,那你跟你朋友就都沒水了,即當使用引用數據類型作爲方法的形參時,若在方法體中修改形參指向的數據內容(水的多少),則會對實參變量的數值產生影響,因爲形參變量和實參變量共享同一塊堆區; 當你把水喝掉後,你朋友並沒有喝水的意思,而是想吃蘋果(形參變量的指向,由原來的喝水變爲吃蘋果),此時他吃蘋果並不影響你喝水,即當使用引用數據類型作爲方法的形參時,若在方法體中修改形參變量的指向,此時不會對實參變量的數值產生影響,因此形參變量和實參變量分別指向不同的堆區;