marmaladeHY

数组是相同类型数据的有序集合。可以通过整型下标可以访问数组中的每一个值

  • 数组长度是确定的;数组一旦被创建,它的大小就是不可以改变的
  • 其元素的类型必须是相同类型,不允许出现混合类型
  • 数组类型可以是任何数据类型,包括基本数据类型和引用数据类型
  • 数组变量属于引用类型,数组也是对象;数组中的元素相当于对象的属性

声明数组

在声明数组变量时,需要指出数组类型(数据元素类型紧跟[])和数组变量的名字

  • 声明数组时,并没有实例化任何对象,只有在实例化数组对象时,JVM才会分配空间,这时才与长度有关
  • 构造一个数组,必须指定长度

数组初始化

数组的初始化方式有两种:静态初始化、动态初始化

  • 当前已经知道存入的元素值,用静态初始化
  • 当前还不清楚要存入哪些数据,用动态初始化

静态初始化数组

静态初始化数组:定义数组的时候直接给数组赋值
静态初始化语法格式:

  • 完整格式:数据类型[] 数组名 = new 数据类型[]{元素1,元素2 ,元素3… };
  • 简化格式:数据类型[] 数组名 = { 元素1,元素2 ,元素3,… };
// 完整格式
double[] scores = new double[]{89.9, 99.5, 59.5, 88.0};
int[] ages = new int[]{12, 24, 36};

// 简化格式
int[] ages = {12, 24, 36};

动态初始化数组

动态初始化数组:定义数组的时候只确定元素的类型和数组的长度,之后再存入具体数据
动态初始化数组语法格式:数据类型[] 数组名 = new 数据类型[长度];

int[] arr = new int[3];

动态初始化后数组中存放的是该数组类型的默认值

数据类型 默认值
byte、short、int、long 0
float、double 0.0
char \'\u0000\'
boolean false
类、接口、数组、String null

使用数组

  • 访问数组元素:通过在数组引用变量后紧跟一个方括号([]),方括号里是数组元素的索引值
  • 数组索引是从0开始的,最后一个数组元素的索引值是数组长度减1
  • 如果访问数组元素时指定的索引值小于0,或者大于等于数组的长度,编译程序不会出现任何错误,但运行时出现异常:ArrayIndexOutOfBoundsException:N(数组索引越界异常)异常信息后的N就是程序员试图访问的数组索引
  • 如果数组变量中没有存储数组的地址,而是null,在访问数组信息时会出现空指针异常(NullPointerException)

数组的遍历

数组元素下标的合法区间:[0,lenght-1];可以通过下标来遍历数组中的元素,遍历时可以读取元素的值或者修改元素的值

// 定义数组
int[] arr = new int[4];
// 初始化数组元素的值
for (int i = 0; i < arr.length; i++) {
    arr[i] = 100 * i;
}
// 读取元素的值
for (int i = 0; i < arr.length; i++) {
    System.out.println(arr[i]);
}

for-each 循环

for-each 是 JDK1.5 新增的功能,专门用于读取数组或集合中所有的元素(即遍历数组)

  • for-each循环的对象必须是一个数组或者是一个实线了 Iterable 接口的类对象
  • for-each循环在遍历数组时不能修改数组中某元素的值
  • for-each仅适用于遍历,不涉及有关索引(下标)的操作
  • for-each循环只能处理一维数组;要想访问多维数组的元素,需要结合嵌套循环来使用
int[] arr = {1, 2, 3};
for (int a : arr) {
    System.out.println(a);
}

多维数组

多维数组可以看成以数组为元素的数组。可以有二维、三维、甚至更多维数组。但是实际开发中用的非常少,最多到二维数组

// Java中多维数组的声明和初始化应按从低维到高维的顺序进行
int[][] arr = new int[3][];
arr[0] = new int[2];
arr[1] = new int[3];
arr[2] = new int[4];

分类:

技术点:

相关文章: