Java中的基本類型和引用類型變量的區別
基本類型:
基本類型自然不用說了,它的值就是一個數字,一個字符或一個布爾值。
引用類型:
是一個對象類型,值是什么呢?它的值是指向內存空間的引用,就是地址,所指向的內存中保存着變量所表示的一個值或一組值。
舉例說明:
int a;
a=250; //聲明變量a的同時,系統給a分配了空間。
引用類型就不是了,只給變量分配了引用空間,數據空間沒有分配,因為誰都不知道數據是什么,整數,字符?我們看一個錯誤的例子:
MyDate today;
today.day = 4; //發生錯誤,因為today對象的數據空間未分配。
那我們怎么給它賦值?引用類型變量在聲明后必須通過實例化開辟數據空間,才能對變量所指向的對象進行訪問。舉個例子:
MyDate today; //將變量分配一個保存引用的空間
today = new MyDate(); //這句話是2步,首先執行new MyDate(),給today變量開辟數據空間,然后再執行賦值操作
//引用變量賦值
MyDate a,b; //在內存開辟兩個引用空間
a = new MyDate(); //開辟MyDate對象的數據空間,並把該空間的首地址賦給a
b = a; //將a存儲空間中的地址寫到b的存儲空間中
如下圖示

引用傳遞 和 值傳遞
引用類型:除了在函數傳值的時候是"引用傳遞",在任何用"="向對象變量賦值的時候都是"引用傳遞"。
值傳遞:基本類型的傳遞都屬於值傳遞,和C語言一樣,當把Java的基本數據類型(如 int,char,double等)作為入口參數傳給函數體的時候,傳入的參數在函數體內部變成了局部變量,這個局部變量是輸入參數的一個拷貝,所有的函 數體內部的操作都是針對這個拷貝的操作,函數執行結束后,這個局部變量也就完成了它的使命,它影響不到作為輸入參數的變量。這種方式的參數傳遞被稱為"值 傳遞"。
