首頁 >Java >java教程 >Java的資料型別與參數傳遞詳細介紹

Java的資料型別與參數傳遞詳細介紹

零下一度
零下一度原創
2017-07-23 17:42:191410瀏覽

 Java提供的資料型別主要分為兩大類:基本資料型別和引用資料型別。

Java中的基本資料型別
#大小 取值範圍
#byte型(位元組) #8bit -128-127  (-2^7到2^7-1)

#short型(短整型)

16bit -2^15到2^15-1
int型(整形) #32bit -2^ 31到2^31-1
long型(長整型) 64bit -2^63到2^63-1
#float型(單精確度浮點型) 32bit  
#double型式(雙精確度浮點型) 64bit  
#char型(字元型別) 16bit  
#boolean型式(布林型) true和false 只有兩種結果,要嘛為「真」要嘛為「假」

 

Java中的引用資料型別:

Java作為物件導向的語言,Java中所有用class, interface,abstract class定義的都屬於Java的參考資料型別。

如何理解Java中的基本資料型別與參考資料型別:

#  1.Java的基本資料型別是由Java語言本身提供的資料型,不需要使用者自己定義;

  2.Java中的參考資料型別則是由使用者自己定義的,而引用資料型別的定義則需要用到基本資料型別;

  3.從記憶體關係上來說:

   Java的記憶體分為兩大塊:堆疊記憶體與堆疊記憶體

  棧記憶體負責儲存方法中的基本資料型別變數與物件的參考變數

  堆疊記憶體負責儲存體透過new關鍵字產生的數據,也就是new關鍵字後面的類別中的屬性和方法。

Java中基本資料型別儲存在堆疊記憶體中,而引用資料型別的型別名稱儲存在堆疊記憶體中,但是引用資料型別的內容則儲存在堆疊記憶體中。兩者之間透過地址來連接,實現互相的訪問。

4.當資料由小範圍轉換到大範圍時,JVM會自動幫我們實作類型的轉換。例如:int i=10;long l=i;類似這樣的資料轉換,Java的虛擬機器可以自動幫我們來完成這個工作。但是當資料由大範圍轉換到小範圍時就需要手動的加上強制類型轉換。如果在轉過程中出現資料的溢位則會根據小範圍的資料類型的值域進行變動。比如說把整形的-129賦值給byte這時候輸出byte的值就是127;如果把整形的128賦值給byte型,那麼輸出的就應該是-128。

 

Java中的參數傳遞:

基本資料型別:

public void test1(){
        int i=10;
        long l;
        l=i;
        System.out.println(i);//输出值10
        System.out.println(l);//输出值10
        l=i+1;
        System.out.println(i);//输出值10
        System.out.println(l);//输出值11
    }

由於基本資料型態是變數名稱與變數值一同儲存在堆疊記憶體中,i l 這兩個變數是互相獨立的,對 l 的賦值運算並不會影響 i 值。

引用資料類型:

public class Book {
    private String name;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}
public class Test {
    public static void main(String[] args) {
        Book book1=new Book();
        book1.setName("《百年孤独》");
        Book book2=new Book();
        book2.setName("《围城》");
        System.out.println("book1:"+book1.getName());//输出:book1:《百年孤独》
        System.out.println("book2:"+book2.getName());//输出:book2:《围城》
        book1=book2;
        book1.setName("《活着》");
        System.out.println("book1:"+book1.getName());//输出:book1:《活着》
        System.out.println("book2:"+book2.getName());//book2:《活着》

    }
}

第一次new了兩個物件分別是book1,book2他們的書名分別是「百年孤寂」和「圍城」。然後透過賦值,book1也指向了與book2一樣的記憶體區域,這時無論是對book1 還是book2 進行操作影響的都是同一塊記憶體區域了。這也就是為什麼後面的輸出都是一樣的原因了。另外book1原先開啟的記憶體空間由於沒有使用,JVM的垃圾回收機制會對其進行處理,將這些不用的記憶體空間進行釋放。

以上是Java的資料型別與參數傳遞詳細介紹的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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