Java——数组的定义与使用
数组的定义与使用
1.数组的基本概念
(1)数组的动态初始化:
数组首先先开辟内存空间,而后再使用索引进行内容的设置,这种定义数组的方式称为动态初始化
数组是引用数据类型,存在有内存分配问题。在使用前一定要开辟空间(实例化),否则就会产生NullPoninterException
数组的动态初始化(声明并开辟数组) 数据类型[ ] 数组名 = new 数据类型[数组长度]
| 数组的分步初始化: 数据类型[ ] 数组名 = null; 数组名 = new 数据类型[数组长度] |
当数组开辟空间之后,就可以采用如下方式对数组进行操作:
1.数组可以通过索引完成,即“数组名[索引]”;
注意:数组索引从0开始,所以索引的范围为:0——(数组长度-1)如果访问的值超过数组长度,会产生 “java.lang.ArrayIndexOutOfBoundsException”异常。
2.当数组动态初始化开辟空间后,数组中每个元素都是该数据类型的默认值。
3.数组是一个有序的集合操作,所以对于数组的内容操作往往采用循环操作(for循环)。
4.Java中可采用 数组名.length 来获取数组长度。
public class Test7 {
public static void main(String[] args){ int[] demon = new int[4];//开辟一个长度为10的整型数组 System.out.println(demon.length);//求数组的长度 demon[0] = 0;//数组的第一个元素 demon[1] = 1; demon[2] = 2; for(int i = 0;i < demon.length;i++){ System.out.print(" "); System.out.print(demon[i]);//打印数组的元素 } } } |
运次结果:10 0 1 2 0 |
(2)数组的动态初始化:
数组在定义的同时可以设置内容,则称为数组的静态初始化。
数据类型[] 数组名 = {值1……} | 数据类型[] 数组名 = new 数据类型[] {值……}(推荐使用) |
public class Test7 { //数组静态初始化(简化格式) public static void main(String[] args){ int[] demon1 ={2,3,5,6,9,11}; System.out.println(demon1.length); for(int i = 0;i < demon1.length;i++){ System.out.println(demon1[i]); } } }
|
运行结果:6 2 3 5 6 9 |
public class Test7 { //数组静态初始化(完成格式)**推荐使用 public static void main(String[] args){ System.out.println(new int[]{1,2,3,4,5}.length);//匿名数组 } } |
运行结果:5 |
2.数组的引用传递
数组作为引用数据类型,也一定存在引用传递。
public class Test7 {
public static void main(String[] args) { int[] demon = null ; demon = new int[4] ; demon[0] = 0 ; // 数组第一个元素 demon[1] = 1 ; // 数组第二个元素 demon[2] = 2 ; // 数组第三个元素 for (int i = 0; i<demon.length ; i++) { System.out.println(demon[i]) ; // 通过循环控制索引下标更改 } } }
|
通过上述例子,我们来探讨内存分配的问题:
引用传递空间:同一块堆内存可被多个栈内存所指向。如下例:内存分析见下。
public class Test7 {
public static void main(String[] args) { int[] demon = new int[4] ; int[] temp = null; System.out.println(demon.length); demon[0] = 0 ; // 数组第一个元素 demon[1] = 1 ; // 数组第二个元素 demon[2] = 2 ; // 数组第三个元素 for (int i = 0; i<demon.length ; i++) { System.out.println(demon[i]) ; // 通过循环控制索引下标更改 } temp = demon; temp[0] = 20; System.out.println(demon[0]); } }
|
运行结果:4 0 1 2 0 20 |
内存分析图:
数组最大的缺陷:长度固定。
3.二维数组
二维数组(数组的数组):二维数组本质上指的就是一个行列的集合。换言之,如果要获得一个数据,既需要行索引,也需要列索引。
要获取二维数组中的元素:数组名[行索引][列索引]
二维数组的初始化:
动态初始化:
数据类型[][] 数组名 = new 数据类型[行个数][列个数] | 静态初始化:
数据类型[][] 数组名 = new 数据类型[][]{{值……},……{值……}} |