什么是数组
概念
数组(Array),是多个相同类型数据按一定顺序排列的集合,并使用一个名字命名,并通过编号的方式对这些数据进行统一管理。
特点
- 有序排列
- 自身是引用类型,
- Java中元素类型固定
- 内存中是连续存储,首地址
- 通过下标访问元素
- 查询和修改快,增删慢
- 初始化必须固定长度,不可修改
一维数组
一维数组的声明和初始化及访问
String[] names = new String[10];
names[0] = "fufan";
names[1] = "zhanghuihuan";
names[2] = "yukaiyi";
names[3] = "zhangyuqing";
names[4] = "fuyu";
names[5] = "wangpantuo";
System.out.println("names[4]:" + names[4]);
复制代码
获取数组长度
String[] names = new String[10];
names[0] = "fufan";
names[1] = "zhanghuihuan";
System.out.println("names length:" + names.length); // 2
复制代码
数组遍历
两种方法
- for循环
- 增强for循环
String[] names = {"fufan","zhanghuihuan","fuyu","wangpantuo"};
/*System.out.println(names[0]);
System.out.println(names[1]);
System.out.println(names[2]);
System.out.println(names[3]);
System.out.println(names[4]);*/
// 方法1
for(int i = 0;i < names.length;i++){
System.out.println(names[i]);
// 方法2 增强for循环
for (String name: names) {
System.out.println(name);
}
复制代码
数组元素的默认初始化
-
数组是引用类型,它的元素相当于类的成员变量,因此数组一经分配空间,其中的每个元素也被按照成员变量同样的方式被隐式初始化。
-
对于基本数据类型而言,默认初始化值各有不同。
-
对于引用数据类型而言,默认初始化值为null
数组元素类型 | 元素默认初始值 |
---|---|
byte | 0 |
short | 0 |
int | 0 |
long | 0L |
float | 0.0F |
double | 0.0 |
char | 0 或写为:’\u0000’(表现为空) |
boolean | false |
引用类型 | null |
代码略
内存结构
JAVA的内存分配主要涉及到几个关键词,堆,栈,方法区,本地方法栈,寄存器。
- 通过java编译生成的class文件加载时进入的方法区
- main方法运行时进行的栈内存,定义的变量也存放在栈内存
- new出来的对象等存放在堆内存在。
具体存储结构如下2张图
地址引用
数组属于引用型变量,因此两个相同类型的数组且具有相同的引用,它们就有完全相同的元素。
二维数组
一般用的少,原理类似,这里不赘述
Java中对数组的封装————List
自己手动实现一个List,参考ArrayList源码
思考几个方面
- 成员变量
- 基本方法
- 扩容方法
- 增删改查方法
TODO 待实现
LeetCode 关于数组相关的算法题
TODO 待补充