← 返回首页
JavaSE系列教程(十一)
发表时间:2019-12-02 13:21:21
讲解Java的数组数据类型

众所周知生活中离不开容器,比如:喝水要使用水杯,购物要使用购物袋。那么程序世界自然也离不开容器,所谓数组(Array)就是在程序中充当容器功能的一种数据类型。

1.数组的特征

1)连续的 2)大小固定 3)类型一致

2.数组的声明和初始化

1)静态初始化 声明的同时初始化数组元素,用户分配初值,系统计算长度。

语法

int[] arr = {1,2,3,4,5};
//或者
int arr[] = {1,2,3,4,5};  //不推荐使用这种声明方式。因为int[] arr比 int arr[] 容易让用户名明白声明的是整型数组变量。

注意:静态初始化数组后,一旦赋给初值就不能重新初始化,比如以下代码:

int[] arr = {1,2,3};

arr = {1,2,3,4,5}; //错误!一旦初始化后长度就不能改变。除非重新分配内存空间。比如:

arr = new int[]{1,2,3,4,5};

2)动态初始化

使用new分配内存空间,用户决定数组长度,系统给数组元素赋初值。 语法:

int[] arr = new int[5];

for(int i=0;i<arr.length;i++){
   System.out.println(arr[i]);  //输出结果都为0;
}

arr[4] = 100; //改变第五个元素的值为100;

3.数组的下标和长度

数组有一个length属性,表示数组的长度。 数组中的每一个元素都有下标,下标从0开始,最后一个元素的下标就是arr.length-1; 如果下标超出了规定的范围,就会抛出数组下标越界异常,例如:

int[] arr = new int[5];

System.out.println("数组长度是:" + arr.length); //打印数组的长度
arr[0]=1;
arr[arr.length-1]=100;
System.out.println(arr[0]);
System.out.println(arr[arr.length - 1]);
arr[arr.length] = 1000; //这里出现ArrayIndexOutOfBoundsException
System.out.println(arr[arr.length]);

运行结果:
数组长度是:5
1
100
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 5
    at com.oracle.datatype.Test.main(Test.java:18)

4.数组的遍历

1)使用for循环遍历

int[] arr = {12,34,6,7,8};

for(int i=0;i<arr.length;i++){
    System.out.println(arr[i]);
}

2)使用foreach遍历

int[] arr = {12,34,6,7,8};

for(int n: arr){
    System.out.println(n);
}

for循环遍历使用频率最高,最灵活,每次知道当前的循环次数。 foreach循环最大的好处是语法简单,内部是使用迭代器原理实现。缺点的无法判断当前的循环次数。比如,上面的例子如果循环次数大于3次,则跳出循环,使用for循环可以很轻松的实现,但是foreach循环就无法办到。

int[] arr = {12,34,6,7,8};

for(int i=0;i<arr.length;i++){
    if(i>=3){
    break;
    }
    System.out.println(arr[i]);
}