1. 数组的概念
一个源自底层的数据结构,可以看成是多个相同类型数据的组合,实现对这些数据的统一管理。又称为 索引数组(index)。
2. 数据结构的概念
数据结构是计算机存储、组织数据的方式。数据结构是指相互之间存在一种或多种特定关系的数据元素的集合。
通常情况下,精心选择的数据结构可以带来更高的运行或者存储效率。数据结构往往同高效的检索算法和索引技术有关。
3. 数组的特性
1.数组在内存中是连续的内存空间,也就意味着,找到一个就能找到其他所有
2.数组中元素的类型必须一致,意味着空间大小一致
3.偏移量:默认使用第一个空间作为整个数组的地址,然后通过偏移量 找到其他元素
4.偏移量为 0 就是第一个元素 , 偏移量为1 找到的就是第二个元素, 偏移量为11 找到的就是第12个元素
5.通过内存地址,直寻法,查找效率极高
6.数组的索引(下标) 是从0开始的
7.因为能够快速找到某个元素,所以想要更改某个元素的时候,只需要使用 = 赋值即可,数组 查询和更改 效率极高
8. 数组一旦确定,长度不能更改,想要添加或者删除元素,必须新建数组,然后把原数组中需要保留的元素,以及新插入的元素依次复制到新数组中,所以增删效率低。
9.数组是引用数据类型
会占用两块内存空间 ,栈内存一块,堆内存一块,栈内存保存的是堆内存数组对象的地址
10.数组是一种线性连续存储的数据结构
11.数组就是一个容器,用来存储其他数据
12. 数组可以存储任意元素,不过每一维元素类型必须一致(数组可以多维)
13. 数组长度一旦确定,不可更改,数组中 默认有个length属性,保存数组的长度
14. 数组下标 从 0 开始
4. 数组的声明
静态声明 : 就是预先知道数组中的每位元素分别是什么
数据类型[] 变量名= {类型值1,类型值2,…};
动态声明 : 就是预先不知道数组中每位元素分别是什么,不过需要确定数组类型以及长度,先用对应的类型默认值占位
数据类型[] 变量名 = new 数据类型[长度];
5. 数组的遍历
获取数组中的元素,通过数组变量[下标];
设置 数组遍历[下标]= 值;
遍历语法实现:
for(int i = 0; i< arr.length ; i++){
int value = arr[i];
System.out.println(value);
}
增强for循环:foreach
把数组中每一位元素拿出来,赋值给 变量
for(数据类型 变量 : 数组 ){ }
6. 数组的常见异常
(1)下标越界异常 java.lang.ArrayIndexOutOfBoundsException:
(2)空指针 java.lang.NullPointerException使用null值,访问属性,因为是null,并没有指向堆内存数组空间,所以是找不对对象的
7. 数组的传递
如果调用方法的时候,直接传递数组
方法名 ( new 数据类型[]{类型值1,类型值2,…} );
8. 传值和引用
传值 : 指的是基本类型传递
传引用 : 指的是引用类型的传递
传值之后,如果在对应方法中将值更该,不会影响调用处的值
如果是传引用,被调用方法通过引用,把内存中数据更改的话,调用处再次通过地址找到空间后,值就发生更改了