首頁 >Java >java教程 >詳細比較Java中的基本型別變數和參考型別變數

詳細比較Java中的基本型別變數和參考型別變數

阿神
阿神原創
2017-03-18 13:56:461717瀏覽

基本型別:

基本型別自然不用說了,它的值就是一個數字,一個字元或一個布林值。

引用類型:

是物件類型,值是什麼呢?它的值是指向記憶體空間的引用,就是位址,所指向的記憶體中保存著變數所表示的一個值或一組值。 

範例說明:   

 int  a;  
 a=250; //宣告變數a的同時,系統則分配了空間給a。

引用類型就不是了,只給變數分配了引用空間,資料空間沒有分配,因為誰都不知道資料是什麼,整數,字元?我們來看一個錯誤的例子:

MyDate today;

today.day = 4; //發生錯誤,因為today物件的資料空間未分配。

那我們要怎麼給它賦值?引用類型變數在宣告後必須透過實例化開啟資料空間,才能對變數所指向的物件進行存取。舉個例子:

MyDate today;            //將變數分配一個已儲存引用的空間

today = new MyDate();     //這句話是2步,先執行新 MyDate(先執行newnewDate(首先執行newnewDate ),給today變數開闢資料空間,然後再執行賦值運算

//引用變數賦值

MyDate a,b;             如此1 #a  =  new MyDate();     //開闢MyDate物件的資料空間,並將該空間的首址賦給a

b  =  a;        將a儲存空間中的位址寫到b的存儲空間中

如下圖示

詳細比較Java中的基本型別變數和參考型別變數

值傳遞:

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

/*define a class*/class MyDate{
    String  Year;
    String  Month;
    String  Day;
    String  Date;    public MyDate(){
        Year = "1900";
        Month ="01";
        Day = "01";
        Date = Year + "." + Month + "."+ Day;
    }     public String toString(){        return Date;
    }   
}public class ObjRef{  
   MyDate mydate1 = new MyDate();
   MyDate mydate2 = mydate1;// = 使 mydate1和 mydate2将指向同一内存空间   //MyDate mydate2 = new MyDate();//从新new一个对象,则mydate1和mydate2是指向不同的内存空间的:                                  //引用空/间和数据空间都不一样
   public void changeObj(MyDate inObj){
        inObj.Date = "2007.09.26";
    }      
    public static void main(String[] args) {
        ObjRef oRef = new ObjRef();
        System.out.println("Before call changeObj() method: " + oRef.mydate1);
        oRef.changeObj(oRef.mydate1);
        System.out.println("After call changeObj() method: " + oRef.mydate1);
        System.out.println("After call changeObj() method: " + oRef.mydate2);//验证“= mydate1和 mydate2将指向同一内存空间“这一结论      
    }
}
相關文章:

Java四種引用型別的具體介紹

解析java中的引用類型的概念

JavaScript 基本資料型別與參考型別的差異詳解

#

以上是詳細比較Java中的基本型別變數和參考型別變數的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn