当数组中每个元素都只带有一个下标时,这种数组就是一维数组,一维数组是数组中最简单的一种数组。
1.一维数组的初始化
数组有两种初始化方式:动态初始化和静态初始化。
1)静态初始化
静态初始化就是在声明时就将数组赋值了,在后面直接调用。
静态初始化的方法如下:
1 | 数组类型 [] 名称 = new 类型{元素}; |
例如:
1 | int [] Array = new int []{ 1 , 2 , 3 }; |
也可以先声明再初始化:
1 2 | int [] Array; Array = new int []{ 1 , 2 , 3 }; |
2)动态初始化
动态初始化就是先声明,在后面的语句中再逐个赋值。
动态初始化的方法如下:
1 2 3 4 5 6 7 | int [] Array = new int [数组长度]; Array[ 0 ] = 1 ; Array[ 1 ] = 2 ; Array[ 2 ] = 3 ; Array[ 3 ] = 4 ; …… Array[数组长度- 1 ] = n; |
2.一维数组的长度
初始化后的数组,其长度是确定的。
静态初始化int [] Array = new int[]{1,2,3};花括号里有3个元素,所以Array的长度是3.
动态初始化int [] Array = new int[数组长度];如果[数组长度]里是3,Array就有3个元素,其数组长度就是3。
3.一维数组的调用
我们可以使用下标(角标)来调用数组。
1)静态初始化
1 2 3 | int [] Array; Array = new int []{ 1 , 2 , 3 }; System.out.println(Array[ 1 ]); |
此时输出的是Array中的第二个元素,即输出2。
这时候就会有同学问:为什么明明是Array[1],却调用的是第二个元素呢?这是因为数组的下标是从0开始的,即Array[0]对应的是数组里的第一个元素,Array[1]对应的是数组里的第二个元素,以此类推。
2)动态初始化
动态初始化中第二个中括号里的数是数组长度,例如:
1 | int [] Array = new int [ 3 ]; |
这样表示Array的数组长度是3,想调用第3个,下标就得是2:
1 | System.out.println( int [ 2 ]); |
注意:调用的数组元素不能超过数组长度。
例如:
1 2 | int [] Array = new int [ 3 ]; System.out.println( int [ 3 ]); |
此时表示的是输出Array数组的第4个元素,但Array的数组长度是3,即只有3个元素,所以会报错。
4.一维数组的遍历
我们可以使用循环语句来实现数组的遍历,例如:
1 2 3 | for ( int i= 0 ;i<Array.length;i++) { System.out.println(Array[i]); } |
需要注意的是,i从0开始是因为数组下标是从0开始的,数组的第一个元素下标是0,要把第一个元素包括进去,所以从0开始循环。
.length方法是数组长度,i<Array.length表示的是i的值小于Array的数组长度,在此条件下循环。
例如:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | import java.util.Scanner; public class Main { public static void main(String[] args) { int [] arr1 = new int []{ 1 , 3 , 5 , 7 , 9 , 11 }; //静态初始化 System.out.println(arr1[ 1 ]); //输出arr的第二个元素:3 int [] arr2 = new int [ 5 ]; //动态初始化 Scanner scan = new Scanner(System.in); System.out.println( "请输入:" ); for ( int i= 0 ;i<arr2.length;i++) { //将arr2逐个赋值 arr2[i] = scan.nextInt(); System.out.println(arr2[i]); //将arr2逐个输出 } } } |
大家可以亲自上机实验!
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程