Java千百问_06数据结构(014)_java数组如何存储在内存中
1、數組的內存空間是何時分配的
Java中的數組是用來存儲同一種數據類型的數據結構,一旦初始化完成,即所占的空間就已固定下來,初始化的過程就是分配對應內存空間的過程。即使某個元素被清空,但其所在空間仍然保留,因此數組長度將不能被改變。?
了解什么是數組看這里:java中的數組是什么?
當僅定義一個數組變量(int[] numbers)時,該變量還未指向任何有效的內存,因此不能指定數組的長度,只有對數組進行初始化(為數組元素分配內存空間)后才可以使用。?
數組初始化分為靜態初始化(在定義時就指定數組元素的值,此時不能指定數組長度)和動態初始化(只指定數組長度,由系統分配初始值)。
- 1
- 2
- 3
- 4
- 5
- 6
- 1
- 2
- 3
- 4
- 5
- 6
建議不要混用靜態初始化和動態初始化,即不要既指定數組的長度的同時又指定每個元素的值。
當初始化完畢后,就可以按索引位置(0~array.length-1)來訪問數組元素了。?
當使用動態初始化時,如在對應的索引位未指定值的話,系統將指定相應數據類型對應的默認值(整數為0,浮點數為0.0,字符為’\u0000’,布爾類型為false,引用類型(包括String)為null)。
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
結果如下:?
Miracle Miracle He null?
Miracle Miracle He null
2、數組在內存中如何儲存
首先給出數組(數組引用和數組元素)在內存中的存放形式,如圖:
數組引用變量是存放在棧內存(stack)中,數組元素本質是一個對象,是存放在堆內存(heap)中。通過棧內存中的指針指向對應元素的在堆內存中的位置來實現訪問。?
了解堆和??催@里:[java堆和棧有什么區別][3]?
[3]:?
當數組在初始化時,就會在堆中分配對應的空間,這個大小是不會因為內部元素的變化而變化,也就是說,如果數組中某個元素被清空,數組占用的內存空間也不會縮小。
存放引用類型數組在內存中如何儲存看這里:引用類型數組在內存中如何儲存
原文地址:http://blog.csdn.net/ooppookid/article/details/51404440
總結
以上是生活随笔為你收集整理的Java千百问_06数据结构(014)_java数组如何存储在内存中的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: iOS 第五期考核题(字典与数组嵌套,字
- 下一篇: 基于CAShapeLayer和贝塞尔曲线