1. 程式人生 > >Java為什麽需要基本類型

Java為什麽需要基本類型

靈活 接下來 sdn html 場景 tps aid article 速度

提問

首先拋出問題吧:Java為什麽需要基本類型?

最開始遇到這個問題的場景不記得了,但是一查之下,發現一個問題:Java既然是面向對象的,宣稱一切都是對象,為什麽還有基礎類型。

先上結論

為了性能+慣性

解決過程

先理解下java的數據構成:java的基本數據類型有八種

簡單點就是,基本數據類型+引用型數據類型。

接下來查查為啥還要基本數據類型呢?

因為這樣子,性能上的追求。

那麽進一步,為啥棧要比堆快呢?其實這個就是個博弈,要靈活性(堆,動態分配內存空間),就要舍棄速度;要速度(棧,速度快,嚴格限制進出方式),就要犧牲靈活性。

具體看這裏:棧和堆的區別是什麽? 為什麽說棧的速度快,堆的速度慢?

但是java發展這麽多年,想現在這點速度差別應該不算什麽事兒了吧,為啥還有。

仔細查查看,發現還是一開始出現的這個東西,一直沿用了下來唄,讓面向對象的代碼中,出現了一絲絲的不和諧。

最後說下裝箱和基本類型:

  • 基本類型都有對應的裝箱類型,但聲明的時候看聲明情況判斷是否是對象:

    int a = 0; // 基本類型
    Integer b = 1; //自動裝箱
    Integer c = new Integer(3); // 對象聲明
  • 可以自動裝箱不代表就是基本類型,比如

    String str = "str";

Java為什麽需要基本類型