(12)2017.8.11-数组

来源:互联网 发布:学java还是.net 编辑:程序博客网 时间:2024/05/27 16:43

今天我们来回顾一下数组,首先是数组的概念:

数组是存储同一种数据类型多个元素的集合。也可以看成是一个容器。
数组既可以存储基本数据类型,也可以存储引用数据类型。

数组定义的格式有两种:

格式 1:数据类型[] 数组名; 

格式 2:数据类型 数组名[]; 我们一般会才有第一种格式来进行数组的定义。

Java 中的数组必须先初始化,然后才能使用。 所谓初始化,就是为数组中的数组元素分配内存空间,并为每个数组元素赋值。 

数组初始化的方式有两种:

动态初始化:初始化时只指定数组长度,由系统为数组分配初始值。 例如int[] arr = new int[5];左边:int:说明数组中的元素的数据类型是int类型 []:说明这是一个数组,arr:是数组的名

称.右边:new:为数组分配内存空间。int:说明数组中的元素的数据类型是int类型,[]:说明这是一个数组,5:数组长度,其实也就是数组中元素的个数 .

静态初始化:初始化时指定每个数组元素的初始值,由系统决定数组长度。 例如 int [] arr1 = {1,5,7,9,11};

System.out.println(arr);   //输出该数组     
//我要地址值没有意义啊,我就要数据值,怎么办呢?   //不用担心,java为你考虑到了。  //其实数组中的每个元素都是有编号的,并且是从0开始。最大编号是数组的长度-1。   //用数组名和编号的配合就可以获取数组中的指定编号的元素。这个编号的专业叫法:索引(下标)   //通过数组名访问数据的格式是:数组名[下标]; 
System.out.println(arr[0]);   
System.out.println(arr[1]);   
System.out.println(arr[2]); 
栈内存的两个引用指向同一个堆内存空间。 无论它们谁的操作,都是针对同一个地方。

编译无异常,运行的时候有异常,称为运行时异常

数组中的常见异常:

1. 数组索引越界 
ArrayIndexOutOfBoundsException 
访问到了数组中的不存在的索引时发生。 

2. 空指针异常 
NullPointerException 
数组引用没有指向实体,却在操作实体中的元素时。 
二维数组:  二维数组定义格式

1. 格式 1 
数据类型[][] 变量名 = new 数据类型[m][n]; 
m 表示这个二维数组有多少个一维数组 
n 表示每一个一维数组的元素个数 
举例: 
int[][] arr = new int[3][2]; 
定义了一个二维数组 arr 
这个二维数组有 3 个一维数组,名称是 arr[0],arr[1],arr[2] 
每个一维数组有 2 个元素,可以通过 arr[m][n]来获取 
表示获取第 m+1 个一维数组的第 n+1 个元素 

2. 格式 2 
数据类型[][] 变量名 = new 数据类型[m][]; 
m 表示这个二维数组有多少个一维数组 
这一次没有直接给出一维数组的元素个数,可以动态的给出。 
举例: 
int[][] arr = new int[3][]; 
arr[0] = new int[2]; 
arr[1] = new int[3] 
arr[2] = new int[1]; 

3. 格式 3 
数据类型[][] 变量名 = new 数据类型[][]{{元素…},{元素…},{元素…}}; 
简化版格式: 
数据类型[][] 变量名 = {{元素…},{元素…},{元素…}}; 
举例: 
int[][] arr =  {{1,2,3},{4,6},{6}};