在Java中,變量可以分為兩種類型: 基本類型和引用類型?;绢愋桶ǎ篵yte、short、int、long、float、double、boolean和char,而引用類型則指除基本類型以外的所有類型。
基本類型 是 Java 程序員直接使用的數(shù)據(jù)類型。這些類型定義了一組從命名類型中獲取信息的操作。它們不需要進(jìn)行實(shí)例化,也不需要使用 new 運(yùn)算符來(lái)創(chuàng)建新實(shí)例。簡(jiǎn)單來(lái)說(shuō),基本類型的值存儲(chǔ)在棧(stack)中。
int x = 10;
上面的代碼中,變量 x 是一個(gè)整數(shù),它存儲(chǔ)在棧中。
引用類型 (Object types)是采用面向?qū)ο缶幊虝r(shí)使用的類型。換句話說(shuō),每個(gè)對(duì)象都是在堆(heap)中創(chuàng)建的,而棧中的變量就是一個(gè)指向堆中實(shí)際對(duì)象的引用。我們可以使用 new 運(yùn)算符來(lái)創(chuàng)建一個(gè)對(duì)象。
Person p = new Person("Tom");
上面的代碼中,變量 p 是一個(gè)指向 Person 對(duì)象的引用。Person 對(duì)象存儲(chǔ)在堆中,而變量 p 存儲(chǔ)在棧中。如下所示:
棧: | | | Pointing | | x | p | to | |_______|________|_______ | 堆: |Person | | | name | "Tom"
與基本類型不同,引用類型的變量必須使用 new 關(guān)鍵字創(chuàng)建一個(gè)新實(shí)例。否則,它會(huì)只是一個(gè) null 值(空引用)。
總結(jié)來(lái)說(shuō),基本類型和引用類型的主要區(qū)別在于:變量存儲(chǔ)的位置不同。基本類型存儲(chǔ)在棧中,而引用類型存儲(chǔ)在堆中。