1、定义格式
1_1、用来存储同一数据类型的多个元素的容器
1_2、数据类型[] 变量名----推荐使用的
1_3、数据类型 变量名[]
2、数组初始化
2_1、动态初始化
A、数据类型[] 数组名 = new 数据类型[长度];
B、我们给数组一个长度,由系统给数组分配默认值
C、int[] arr = new int[5];----new:这是在内存中申请了一个空间用来存储数据
2_2、静态初始化
A、数据类型[] arr = new 数据类型[]{元素1,元素2,...};
B、数据类型[] arr = {元素1,元素2,...};
C、我们定义数组时给定元素的值,由系统分配长度。
D、int[] arr = {1,2,3,4,5};
E、只能按照格式写 先定义变量再赋值的方式不支持
3、访问数组元素
3_1、想要拿到数组中的某个元素
A、需要知道 内存中的地址
B、以及数据所在位置的编号
3_2、数组名:
A、数组在计算机中的地址值
3_3、在数组中元素的编号
A、索引、角标、下标
B、索引是从0开始的
C、例子:int[] arr = new int[5];
1)、获取数组中的元素
Arr--地址值
2)、arr[角标]--角标 元素在数组中的位置
3)、获取数据---角标 元素在数组中的位置
4)、获取数据---arr[0];
5)、修改元素--arr[1] = 100;
4、Java中内存分配
4_1、栈
A、存储局部变量的---指定义在方法中的变量
B、用完之后立即释放---生命周期很短
4_2、堆
A、被 new出来的东西 被称作对象 或者 实体
B、对象
1)、有地址值
2)、数据有默认值
a、byte short int long 0
b、float double 0.0
c、boolean false
d、引用书的类型的默认值 null
3)、用完之后等着垃圾回收器(一段代码)回收(GC机制)
a、生命周期长
b、频繁的new对象,占用内存。
4_3、方法区
A、对象的时候
B、字节码对象,静态的数据等...
4_4、本地方法区
4_5、寄存器
5、数组中常见的两个小问题
5_1、NullPointerException
A、空指针异常
B、使用不存在的指向进行了访问
5_2、ArrayIndexOutOfBoundsException
A、角标越界
B、访问了不存在的角标元素
6、数组遍历
6_1、数组属性
A、数组名.length 可以给我们提供数组的长度
int[] arr = {1,2,3,4,5};
for(int i = 0; i < arr.length;i++){
System.out.println(arr[i]);
}
7、数组求最值
7_1、最大值
7_2、最小值