2数组和简单算法
数组和简单算法
1 数组的特点
- 有序排列的
- 数组属于引用数据类型的变量,数组的元素既可以是基本数据类型也可以是引用数据类型
- 数组对象会在内存中开辟一整块连续的空间
- 数组的长度一旦确定就不能修改
2 一维数组的使用
//一维数组的声明和初始化
int[] ids=new int[]{1001,1002,1003,1004};//静态初始化
String[] names=new String[5];//动态初始化 初始化和赋值分开进行
//一旦初始化后长度就确定了
//通过角标方式调用
names[0]="fao";
names[1]="zzz";
names[2]="zhuzhu";
names[3]="haaha";
names[4]="lli";
//获取数组的长度:length
System.out.println(names.length);
//遍历数组
for (int i=0;i<names.length;i++){
System.out.println(names[i]);
}
//数组元素默认初始化值
//数组元素是整型:0
//浮点型:0
//char型: 0 而非'0‘
//boolean型:false
//是引用数据类型时(String): null
3 数组的内存解析


4 二维数组的使用和内存解析
//二维数组声明和初始化
int[][] arr1=new int[][] {{1,2,3},{4,5,6}}; //静态初始化
String[][] arr2=new String[3][2];//动态初始化
String[][] arr3=new String[3][];//动态初始化2
int[] arr5={1,2,3,4,5};//类型锯断,不标准
int[][] arr4=new int[][]{{1,2,3},{4,5},{7,8,9}};
//调用指定位置元素
System.out.println(arr1[0][1]);//2
arr3[1]=new String[4];
System.out.println(arr3[1][0]);//null 前面不写这边就会报错
//获取数组的长度
System.out.println(arr4.length);//3
System.out.println(arr4[1].length);//2
System.out.println();
//如何遍历
for (int i=0;i<arr4.length;i++){
for (int j=0;j<arr4[i].length;j++){
System.out.println(arr4[i][j]);
}
}
//数组元素默认初始化值
//二维数组分为外层数组元素和内层数组元素
int[][] arr10=new int[4][3];
System.out.println(arr10[0]);//一个地址值[I@119d7047
System.out.println(arr10[0][0]);//0
System.out.println(arr10);//[[I@776ec8df 一个二维数组地址值
float[][] arr11=new float[4][3];
System.out.println(arr11[0]);//一个地址值
System.out.println(arr11[0][0]);//0.0
System.out.println(arr11);//一个二维数组地址值
int[][] arr12=new int[4][];
System.out.println(arr12[1]);//null 内存中还没指定所以为null
//System.out.println(arr12[1][0])报错 空指针异常

5 Arrays工具类的使用
java.util.Arrays类即为操作数组的工具类,包含了用来操作数组的各种方法
-
boolean equals(int[] a,int[] b) 判断两个数组是否xiangdeng
-
String toString(int[] a) 输出数组信息
-
void fill (int[] a, int val) 将指定值填充到数组之中
-
void sort(int[] a) 对数组进行排序
-
int binarySearch(int[] a,int key) 对排序后的数组进行二分法检索指定的值
//boolean equals() int[] arr1=new int[]{1,2,3}; int[] arr2=new int[]{3,2,1}; boolean isEquals= Arrays.equals(arr1,arr2); System.out.println(isEquals);//false //String toString(): System.out.println(Arrays.toString(arr1));//[1, 2, 3] //void fill() Arrays.fill(arr1,10); System.out.println(Arrays.toString(arr1));//[10, 10, 10] //void sort() Arrays.sort(arr2); System.out.println(Arrays.toString(arr2));//[1, 2, 3] //int binarySearch() int[] arr3=new int[]{1,2,3,4,5,6,7}; int index=Arrays.binarySearch(arr3,4); System.out.println(index);//3
6 常见数组异常
- 数组角标越界异常: ArrayIndexOutOfBoundsException
- 空指针异常: NullPointerException

浙公网安备 33010602011771号