数组

本文深入解析数组和ArrayList的特性与区别,阐述数组的定义、内存分配、地址计算及优势劣势,对比Java中数组与ArrayList在长度固定性、自动扩容、封装细节操作及存储类型上的差异。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

定义:
数组是一种线性表数据结构,它使用一组连续的内存空间,存储一组具有相同类型的数据。

内存分配:
假设有一个数组 int[] a = new int[10],当创建该数组时,计算机会给该数组分配一个连续的内存空间。
地址计算:
假设数组第一个元素a[0]的地址为base_Address,那么数组中第i个元素的内存地址为:

a[i]_address = base_address + i * data_type_size

data_type_size表示数组中每个元素的大小

数组的优势:
数组适合查询,根据下标的查询时间复杂度为O(1)
数组的弱势:
不适合插入删除

Java中数组和ArrayList的对比:
1,数组长度是不可变的
2,arrayList是可变的,当长度不够时,会自动扩容为原来长度的1.5倍
3,arrayList封装了数组的很多细节操作,如插入,删除,数据搬移等
4,arrayList 不能存储基本数据类型如int,long,需要封装为Integer,Long类,但是自动装箱和自动拆箱会有性能损耗。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值