1. 程式人生 > >Java中的基本數據類型及其封裝類

Java中的基本數據類型及其封裝類

實例化 too shadow color ant 基本類 實用 anti 泛型

Java中的數據類型有兩種,基本數據類型和引用數據類型,引用數據類型的創建是

需要去new一個對象,該對象的內存分配在堆區,同時棧區會保存一個指向該對象的引用,

但是對於一些簡單數據的創建,用new的方式就不是很有效了,因此JVM中定義了一套對於基本

數據類型的描述,它直接保存值到堆棧當中,而不需要在堆中創建對象。

Java需要確定每種基本數據類型所占空間的大小,而且他們所占空間的大小是固定不變

的,這也是java具有高移植性的一個原因,下面是java中所定義的9中基本數據類型及其封裝類:

技術分享圖片

由於基本數據類型是非面向對象的,因此java為基本類型提供了封裝類,使我們可以采用面向對象的方式操作基本數據類型,

同時這些類中也封裝了很多可以供我們使用的實用方法。

此時有的小夥伴會發現void也是原始數據類型??還有封裝類Void??下面來看看Void類的代碼:

package java.lang;

/**
 *這段話的意思就是Void類是一個不可實例化的占位符類,它持有對標識Java關鍵字void的Class對象的引用。
 * The {@code Void} class is an uninstantiable placeholder class to hold a
 * reference to the {@code Class} object representing the Java keyword
 * void.
 *
 * @author  unascribed
 * @since   JDK1.1
 */
public final
class Void {

    /**
     *
     * The {@code Class} object representing the pseudo-type corresponding to
     * the keyword {@code void}.
     *這句代碼可以理解為返回void基本數據類型的封裝類Void,這句代碼在其他封裝類的源碼中都有出現
     *且getPrimitiveClass()方法是native的,不能java中實現,暫且如此理解
     */
    public static final Class<Void> TYPE = Class.getPrimitiveClass("void");

    /*
     * The Void class cannot be instantiated.
     */
    private Void() {}
}

因此可以理解:Void類可能本身作用就只是不起任何作用,但是本身只是一個占位符類。即Void類本身只是一個占位符類,不能被實

例化,多用於泛型中作占位符使用。而對於基本數據類型void,它的含義應該就是‘沒有東西’,例如表示返回值,就表示沒有返回值。。。

應該可以這樣理解


Java中的基本數據類型及其封裝類