1、数组
1-1数组概述
一次性声明大量用于存储数据的变量<br /> 要存储的数据通常都是同类型数据
1-2 数组定义格式
格式1: 数据类型[] 变量名<br /> int[] arr<br /> 格式2: 数据类型[] 变量名[]<br /> int[] arr[]
2、数组初始化
2-1 初始化概念
Java中的数组必须先初始化,然后使用
初始化:数组中的数组元素需要分配内存空间,并为每个数组元素赋值
2-2 数组初始化方式
2-2-1 动态初始化:
初始化时只指定数组长度,由系统为数组分配初始值
格式:数据类型[] 变量名 = new 数据类型[数组长度];
int[] arr = new int[3];
3、数组元素访问
3-1 数组元素访问
1.数组变量访问方式
格式:数组名
2.数组内部保存的数据的访问方式
格式: 数组名[索引]
3.索引介绍:
索引是数组中的数据编号方式
作用:索引用于访问数组中的数据,数据名[索引]等同于变量名,是一种特殊的变量名
索引特征:1. 索引是从0开始的
2. 索引是连续的
3. 索引逐一增加,每次+1
代码解释:
/
左边:
int:说明数组元素是int类型
[]:说明这是一个数组
arr:数组的名称
右边:
new: 新建一个数组,申请内存空间
int: 是整数类型
[]: 说明这是个数组
3:数组长度,数组中有多少个元素
/
int[] arr = new int[3];
// 无论数组内元素定义多少,该arr占据的空间值不变
System.out.println(arr);
_System._out.println(arr[0]);
// 输出0 数组在初始化时整数默认值0_System.out.println(arr[1]);
// 输出0 (根据索引获取数据)
System.out.println(arr[2]);
// 输出0 (根据索引获取数据)
4、内存分配
4.1 Java中内存分配
Java程序在运行室,需要在内存中分配空间,为了提升运算效率,对空间进行了不同取余的划分,因为 每一篇区域都有特定的处理数据得方式和内存管理方式
单个数组内存图:
int[] arr = new int[3];
int[] arr new int[3];
001 内存地址赋值给arr 001 内存地址
索引 0 对应的值 0
索引 1 对应的值 0
索引 2 对应的值 0
栈内存 堆内存
栈内存:1.存储局部变量 2.定义子在方法中的变量,例如实例的arr
3.使用完毕,立即消失
堆内存: 存储new出来的内容(实体,对象)
数组在初始化时,会为存储空间添加默认值整数:默认值0
浮点数: 默认值0.0
布尔值: 默认值false
字符: 默认值是空字符
引用数据类型: 默认值是Null
每一个new出来的对象都有一个地址值使用完毕,会在垃圾回收器空闲时回收
多个数组内存图(多个数组指向相同)
int[] arr = new int[3];
arr[0] = 100;
arr[1] = 200;
arr[2] = 300;
System.out.println(arr); //[I@1b6d3586
System.out.println(arr[0]); //100
System.out.println(arr[1]); //200
System.out.println(arr[2]); //300
//定义第二个数组指向第一个数组
int[] arr2 = arr; //将arr2数组指向arr的内存地址
arr2[0] = 111; //因为内存地址相同,所以修改的数字据就是arr的数据
arr2[1] = 222;
arr2[2] = 333;
//输出两个数组的名及元素
System.out.println(arr); //[I@1b6d3586
System.out.println(arr[0]); //111
System.out.println(arr2); //[I@1b6d3586
System.out.println(arr2[0]); //111
5、数组初始化之静态初始化
静态初始化:初始化时指定每个数组元素的初始值,由系统决定数组长度<br /> 格式: 数据类型[] 变量名 = new 数据类型[] {数据1, 数据2, 数据3};<br /> 范例: int[] arr new int[] {1,2,3};<br /> 简化: 数据类型[] 变量名 = {数据1, 数据2, 数据3};<br /> 范例: int[] arr = {1,2,3};<br /> 数组操作问题:<br /> 1、索引越界:访问了数组中不存在的索引对应的元素,造成索引越界<br /> 报错提示:ArrayIndexOutOfBoundsException<br /> 2、空指针异常:访问的数组已经不再指向堆内存的数据,造成空指针异常<br /> 报错提示:NullPointerException<br /> 3、null:空值 引用数据类型的默认值,表示不指向任何有效对象
6、数组常见操作
6.1 遍历数组
int[] arr = {11 ,22,33,44,55};
System.out.println(arr[0]);
System.out.println(arr[1]);
System.out.println(arr[2]);
System.out.println(arr[3]);
System.out.println(arr[4]);
// 输出11,22,33,44,55
—使用for循环遍历数组,索取数据,遍历索引0-4
int[] arr = {11 ,22,33,44,55};
for (int _i =0; i< 5; i++){
System._out.println(arr[i]); }
6.2 获取数组元素数量
格式:数组名.length
范例: arr.length
int[] arr = {11 ,22,33,44,55};
for (int _i =0; i< arr.length ; i++){
System._out.println(arr[i]); }
数组遍历通用格式
int[] arr = {…};
for (_int _i =0; i< arr.length ; i++){
arr[i] // 对arr[i] 进行操作
}
6.3 获取最大值
_int_[] arr = {11 ,22,33,44,55};<br /> 1.定义一个变量,保存最大值(最小值)<br />_int_ max;<br />2.取数组中第一个数据座位变量的初始值<br />_int_ max =arr[0];<br />3.与数组中剩余的数据逐个对比<br />_int_[] arr = {11 ,22,33,44,55};<br />_int _max = arr[0];<br />_for _(_int _i =0; i< arr.length ; i++){<br /> _if_( arr[i] >max) {<br /> max = arr[i]; } }<br />System._out_.println(max);