- 数组的理解:数组(Array),是多个相同类型数据一定顺序排列的集合,并使用一个名字命名,并通过编号的方式对这些数据进行统一管理;
- 数组相关的概念:
- 数组名
- 元素
- 角标、下标、索引
- 数组的长度:元素的个数
- 数组的特点
- 数组是序排列的;
- 数组属于引用数据类型的变量,数组的元素,既可以是基本数据类型,也可以是引用数据类型;
- 创建数组对象会在内存中开辟一整块连续的空间;
- 数组的分类
- 按照维数:一维数组、二维数组、多维数组;
- 按照数组元素的类型:基本数据类型元素的数组、引用数据类型元素的数组;
- 写出一维数组初始化的两种方式;
int[] arr = new int[5];//动态初始化
String[] arr1 = new String[]("Tom","Jerry","Jim"); 静态初始化
数组一旦初始化,其长度就是确定的。arr.length
数组长度一旦确定确定,就不可修改;
- 写出二维数组初始化的两种方式;
int[][] arr = new int [4][3];//动态初始化1
int[][] arr1 = new int [4][];//动态初始化2
int[][] arr2 = nwe int[][]{{1,2,3},{4,5,6},{7,8,9}};//静态初始化
- 如何遍历如下的二维数组 ;
int[][] arr2 = nwe int[][]{{1,2,3},{4,5},{6,7,8}};
for(int i = 0; i < arr.length ; i++){
for(int j = 0 ; j < arr[i].length ; j++){
System.out.print(arr[i][j]+"\t");
}
System.out.println();
}
- 使用冒泡排序,实现如下的数组从小到大排序;
int[] arr = new int[]{34,5,-98,6,-76,0,-3}
for(int i = 0 ; i < arr.length-1 ; i++){
for(int j = 0 ; j < arr.length-i-1 ; j++){
if(arr[j]>arr[j+1]){
int temp = arr[j];
arr[j] = arr[j+1];
a[j+1] = temp;
}
}
}
- 如何反转上面的数组,请代码实现;
int[] arr = new int[]{34,5,-98,6,-76,0,-3}
for(int i = 0 ; i < arr.length-1 ; i++){
for(int j = 0 ; j < arr.length-i-1 ; j++){
if(arr[j]<arr[j+1]){
int temp = arr[j];
arr[j] = arr[j+1];
a[j+1] = temp;
}
}
}
- 使用线性查找,从上述数组中查找22是否存在。存在,返回所在位置的索引,不存在,输出错误信息;
int dest = 22;
boolean isFlag = true;
for(int i = 0 ; i < arr.length ; i++){
if( dest == arr[i] ){
System.out.print(i);
break;
}
if(isFlag){
System.out.print("未找到");
}
}
- 数组中常见的异常有哪些?
- ArrayIndexOutOfBoundsException:数组角标越界异常;
合理范围:[ 0,arr.length-1 ];
越界:arr[ -1 ],arr [ arr.length ];
-
NullPointerException:空指针异常;
int [ ]arr = null;
arr[0];