當前位置:首頁 » 存儲配置 » 存儲類型默認分配

存儲類型默認分配

發布時間: 2025-05-20 13:32:26

① 51單片機定義變數時默認是存儲到哪裡的

未顯式聲明的情況下,變數會根據Memory Model的設置,默認分配在指定的存儲區。

  • Small模式:默認分配在data區

  • Compact模式:默認分配在pdata區

  • Large模式:默認分配在xdata區

新建工程默認都是Small模式,所以未顯式聲明存儲區域的變數都會分配在data區的。所以才會容易出現data區擠爆、編譯器跳著腳讓你把變數分到idata區去……

② Java基本數據類型

一、基本數據類型:



byte:Java中最小的數據類型,在內存中佔8位(bit),即1個位元組,取值范圍-128~127,默認值0


short:短整型,在內存中佔16位,即2個位元組,取值范圍-32768~32717,默認值0


int:整型,用於存儲整數,在內在中佔32位,即4個位元組,取值范圍-2147483648~2147483647,默認值0


long:長整型,在內存中佔64位,即8個位元組-2^63~2^63-1,默認值0L


float:浮點型,在內存中佔32位,即4個位元組,用於存儲帶小數點的數字(與double的區別在於float類型有效小數點只有6~7位),默認值0


double:雙精度浮點型,用於存儲帶有小數點的數字,在內存中佔64位,即8個位元組,默認值0


char:字元型,用於存儲單個字元,佔16位,即2個位元組,取值范圍0~65535,默認值為空


boolean:布爾類型,佔1個位元組,用於判斷真或假(僅有兩個值,即true、false),默認值false


二、Java數據類型基本概念:


數據類型在計算機語言裡面,是對內存位置的一個抽象表達方式,可以理解為針對內存的一種抽象的表達方式。接觸每種語言的時候,都會存在數據類型的認識,有復雜的、簡單的,各種數據類型都需要在學習初期去了解,Java是強類型語言,所以Java對於數據類型的規范會相對嚴格。數據類型是語言的抽象原子概念,可以說是語言中最基本的單元定義,在Java裡面,本質上講將數據類型分為兩種:基本類型和引用數據類型。


基本類型:簡單數據類型是不能簡化的、內置的數據類型、由編程語言本身定義,它表示了真實的數字、字元和整數。


引用數據類型:Java語言本身不支持C++中的結構(struct)或聯合(union)數據類型,它的復合數據類型一般都是通過類或介面進行構造,類提供了捆綁數據和方法的方式,同時可以針對程序外部進行信息隱藏。


三、Java中的數據類型與內存的關系


在Java中,每個存放數據的變數都是有類型的,如:


charch;floatx;inta,b,c;


ch是字元型的,就會分配到2個位元組內存。不同類型的變數在內存中分配的位元組數不同,同時存儲方式也是不同的。


所以給變數賦值前需要先確定變數的類型,確定了變數的類型,即確定了數據需分配內存空間的大小,數據在內存的存儲方式。


四、Java數據類型在內存中的存儲:


1)基本數據類型的存儲原理:所有的簡單數據類型不存在「引用」的概念,基本數據類型都是直接存儲在內存中的內存棧上的,數據本身的值就是存儲在棧空間裡面,而Java語言裡面八種數據類型是這種存儲模型;


2)引用類型的存儲原理:引用類型繼承於Object類(也是引用類型)都是按照Java裡面存儲對象的內存模型來進行數據存儲的,使用Java內存堆和內存棧來進行這種類型的數據存儲,簡單地講,回龍觀北大青鳥認為「引用」是存儲在有序的內存棧上的,而對象本身的值存儲在內存堆上的。


③ int和Integer范圍 int和integer

int和Integer的范圍

  • int的范圍

    • 簡介:int是Java提供的8種原始數據類型之一,用於存儲整數值。
    • 范圍:int類型在Java中佔4個位元組(32位),其取值范圍是-2^31到2^31-1,即-2147483648到2147483647。
    • 默認值:int類型的默認值是0。
  • Integer的范圍

    • 簡介:Integer是Java為int類型提供的封裝類,屬於引用數據類型。它擴展了int類型,並定義了許多轉換方法。
    • 范圍:從數值范圍的角度看,Integer封裝了int類型的值,因此其數值范圍與int相同,即-2^31到2^31-1。但需要注意的是,Integer作為對象,其「范圍」還涉及到對象的創建、比較、內存分配等方面。
    • 默認值:Integer類型的默認值是null,表示未初始化或未指向任何Integer對象。
    • 內存佔用:雖然Integer對象本身佔用的內存不止4個位元組(因為還包括對象頭和可能的對齊填充等),但用於存儲int值的部分仍然是4個位元組。Integer對象佔用的總內存大小取決於JVM的實現和對象的內部狀態。
  • int與Integer的主要區別

    • 類型:int是基本數據類型,直接存儲數值;Integer是引用數據類型,用引用指向對象。
    • 默認值:int的默認值是0;Integer的默認值是null。
    • 存儲原理:int是值傳遞,存儲在棧中,數據不可變;Integer是引用傳遞,存儲在堆中,引用指向的內存地址中的數據可以變化,但棧中的引用不變。
    • 內存分配:聲明為int的變數不需要實例化,直接分配內存;聲明為Integer的變數需要實例化,使用new為其分配內存。

總結:int和Integer在數值范圍上是一致的,都表示-2^31到2^31-1的整數。但它們在類型、默認值、存儲原理、內存分配等方面存在顯著區別。int是基本數據類型,直接存儲數值,適用於高效的數值計算;而Integer是引用數據類型,提供了更多的面向對象特性和方法,適用於需要封裝和轉換的場景。

熱點內容
linux485 發布:2025-07-05 14:38:28 瀏覽:293
php用的軟體 發布:2025-07-05 14:06:22 瀏覽:744
沒有許可權訪問計算機 發布:2025-07-05 13:29:11 瀏覽:418
javaweb開發教程視頻教程 發布:2025-07-05 13:24:41 瀏覽:666
康師傅控流腳本破解 發布:2025-07-05 13:17:27 瀏覽:226
java的開發流程 發布:2025-07-05 12:45:11 瀏覽:669
怎麼看內存卡配置 發布:2025-07-05 12:29:19 瀏覽:271
訪問學者英文個人簡歷 發布:2025-07-05 12:29:17 瀏覽:821
1970linux 發布:2025-07-05 12:12:43 瀏覽:109
解壓挑刺 發布:2025-07-05 12:12:12 瀏覽:537