日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

数据结构特性解析 (一) 数组

發布時間:2025/3/21 编程问答 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 数据结构特性解析 (一) 数组 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

前言

數組是java中最基本的數據結構,有很多更高級的數據接口實現方式都是使用的數組,所以了解數組是很重要的

描述

數組是一個對象,內部有一塊連續的內存,自身只占用很小的內存,其他位置都是根據長度和類型而分配的值對象或者引用值對象

特點

1. 數組長度在初始化時確定且無法修改

由上圖可見,數組并沒有add或修改長度的方法

2.數組每個位置所占的內存大小是在初始化時固定的

組中存儲對象都是存儲的其引用值,在同一個環境下(32位一般4個字節,64位4到8個字節)引用值的大小都是一樣的,因此對象數組每個位置所占的內存大小也是一樣的

而由于64位地址比32位地址更大,所以在64位環境下,對象數組也會比32位環境下占用的空間更大

果存儲的是基本類型的話,則每個位置所占用的大小都是該基本數據類型的大小

ps:基本數據占用內存大小:https://blog.csdn.net/ccw0054/article/details/79082679

3.數組是一個創建在堆內存中的對象,并且內存占用是連續的

由于數組的前兩個特性,因此被設計為內存連續的,這樣查找速度更快(因為每個位置大小固定,并且位置連續,所以只需要通過向陣列頭部的地址添加合適的偏移來找到需要的內存地址)

但是這樣的設計也會使新建大數組時尋找不到合適的內存空間(有可能空間足夠,但不是連續的)而引發內存重排序(gc?)?? 有待考究

圖示(由于堆的特性和對象自動回收,很有可能會出現下面圖示的情況):

如上圖,想創建一個長度為5的數組,可是堆內存中并沒有一塊連續的長度夠的內存,因此可能會引發內存重排序(gc?)?,然后使內存整齊,并騰出足夠的連續的空間,可以創建出對應的數組,因此數組也是一個對內存要求嚴格的數據結構

4.數組隨機查找比較快

因為特性3,數組根據索引的方式去查找數據,會比較快,不用進行循環或多次尋址

而遍歷查詢則需要遍歷索引來循環從數組中取出

5.數組支持嵌套

比如:? int[][] ints =new int[10][10];//一個10*10的二維數組

取用第一層數組的第5個里的第1個:? int i =?ints[4][0];

ps:也支持多層嵌套,叫做n維數組,因為平時用不到,所以就不寫了

下一篇:?數據結構特性解析 (二) ArrayList

如有錯誤或補充,請各位大佬指出,我會盡快修改

總結

以上是生活随笔為你收集整理的数据结构特性解析 (一) 数组的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。