三、数组

3.1 数组理解

  1. 数组属于 引用数据类型 的变量。数组的元素,既可以是 基本数据类型 ,也可以是 引用数据类型。
  2. 创建数组对象会在内存中开辟一整块连续的空间。
  3. 数组的长度一旦确定,就不能修改。

3.2 一维数组

3.2.1 数组初始化

1、静态初始化(数组的初始化和数组元素的赋值操作同时进行)

int[] ids;
ids = new int[]{1001,1002,1003,1004;

2、动态初始化(数组的初始化和数组元素的赋值操作分开进行)

String[] names = new String[5];

Java中数组角标从 0 开始,到 length-1 结束

3.2.2 数组元素的默认初始化值

int[] arr= new int[4];
for(int i=0;i< arr.length;i++){
	System.out.println(arr[i]);
}
//输出:0 0 0 0
数组元素类型 初始化值
基本数据类型
整型 0
浮点型 0.0
char型 0(数字) 而非 ‘0’(字符)
boolean型 false
引用数据类型 null(关键字)
String null

3.2.3 数组内存结构

  • 栈(stack):局部变量(方法里的变量)

  • 堆(heap):new出来的结构(对象、数组)

3.3 多维数组

3.3.1 二维数组的初始化

//一维数组初始化
int[] arr = new int[] {1,2,3};
//二维数组——静态初始化
int[][] arr1 = new int[][]{{1,2,3},{4,5},{6,7,8}};
//二维数组——动态初始化1
String[][] arr2 = new String[3][2];
//二维数组——动态初始化2
String[][] arr3 = new String[3][];
//要么赋值,要么规定长度

//也是正确写法(类型推断)
int[] arr4[] = {{1,2},{3,4},{5,6,7}};

//数组长度
System.out.println(arr1.length);//3
System.out.println(arr1[1].length);//2

System.out.println(arr1[0][1]);//2
System.out.println(arr2[1][1]);//null
System.out.println(arr3[1][0]);//空指针异常

3.3.2 二维数组默认初始化值

int[][] arr = new int[4][3];
System.out.println(arr[0]);//[@16进制地址值
System.out.println(arr[0][0]);//0
System.out.println(arr);//[[@16进制地址值

针对初始化方式一:int[][] arr= new int[4][3];

​ 外层元素初始化值:地址值

​ 内层元素初始化值:与一位数组初始化值相同

针对初始化方式二:int[][] arr = new int[4][];

​ 外层元素初始化值:null

​ 内层元素初始化值:不能调用,否则报错(空指针异常)

3.4 数组Arrays工具类使用

方法 功能 底层实现
boolean equals(int[]a , int[]b) 判等 地址、非空、长度
String toString(int[] a) 输出数组 遍历
void fill(int[] a , int val) 替换 全部替换
void sort(int[] a) 对数组排序 快排
int binarySearch(int[] a , int k) 找值为key索引 ≥0:找到 <0:未找到

3.5 数组常见异常

3.5.1 数组角标越界异常:ArrayIndexOutOfBoundsExcetion

int[] arr= new int[]{1,2,3,4,5};
 for(int i=0;i<=arr.length;i++){
 	System.out.println(arr[i]);
 }
 System.out.println(arr[-2]);

3.5.2 空指针异常:NullPointerException

情况一:

int[] arr1 = new int[] {1,2,3};
arr1 = null;
System.out.println(arr1[0]);

情况二:

int[][] arr2 = new int[4][];//内层没有初始化
System.out.println(arr2[0][0]);

情况三:

String[] arr3 = new String[]{"AA","BB","CC"};
arr3[0] = null;
System.out.println(arr3[0].toString());

原文地址:http://www.cnblogs.com/yuqianer/p/16796479.html

1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长! 2. 分享目的仅供大家学习和交流,请务用于商业用途! 3. 如果你也有好源码或者教程,可以到用户中心发布,分享有积分奖励和额外收入! 4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解! 5. 如有链接无法下载、失效或广告,请联系管理员处理! 6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需! 7. 如遇到加密压缩包,默认解压密码为"gltf",如遇到无法解压的请联系管理员! 8. 因为资源和程序源码均为可复制品,所以不支持任何理由的退款兑现,请斟酌后支付下载 声明:如果标题没有注明"已测试"或者"测试可用"等字样的资源源码均未经过站长测试.特别注意没有标注的源码不保证任何可用性