数组知识点总结
一,数组的特点:
- 数组是有序排列的;
- 数组属于引用类型的变量。数组的元素,既可以是基本数据类型,也可以是引用数据类型
- 创建数组对象会在内存中开辟一整块连续的空间;
- 数组一旦初始化完成,其长度就确定了;
二, 1,数组的声明和初始化:
- 静态初始化:数组的初始化和数组元素的赋值操作同时进行;
一维数组:
int[] ids; ids=new int[]{1001,1002,1003,1004};
二维数组:
int[][] arr1=new int[][] {{1,2,3},{4,5},{6,7,8}};
- 动态初始化:数组的初始化和数组元素的赋值操作分开进行;
一维数组:
String[] names=new String[5];
二维数组:(中括号放在数组名后面也可以)
String[][] names=new String[5][2];//初始化方式一
String[][] names=new String[5][];//初始化方式二
2,调用数组指定位置的元素:通过角标方式;
3,获取数组的长度:借助于length属性;
4,如何遍历数组元素:
for(i=0;i<names.length;i++){ System.out.println(i)}
int[][] arr1=new int[][] {{1,2,3},{4,5},{6,7,8}}; for(int i=0;i<arr1.length;i++){ for(int j=0;j<arr[i].length;j++){ } }
5,数组元素的默认初始化值:
一维数组:
- 数组元素是整型:0;
- 数组元素是浮点型:0.0;
- 数组元素是char型:0或'\u0000',而非‘0’;
- 数组元素是布尔型:false;
- 数组元素是引用类型时:null
二维数组:
规定:二维数组分为外层数组的元素,内层数组的元素;
int array[][]=new int[4][3];
外层元素:array[0],array[1]等
内层元素:array[0][1],array[1][2]等
针对于初始化方式一:外层元素的初始化值为:地址值;
内层元素的初始化值为:与一维数组初始化情况相同
针对于初始化方式二:外层元素的初始化值为:null;
内层元素的初始化值为:不能调用,否则出错。
6,数组的内存解析:(内存的简化结构)
三,一维数组练习题1:
//单间短期出租四个月,550元/月(水电费公滩,网费35/月,屋内均是IT行业人士,喜欢安静, //所以要求来租着最好是同行,联系方式如下: public class ArrayTest { public static void main(String args[]) { int[] arr=new int[] {2,9,6,0,5,7,1}; int[] index=new int[] {6,5,5,2,4,3,0,1,3,1,2}; String tel=""; for(int i=0;i<index.length;i++) { tel+=arr[index[i]]; } System.out.println("联系方式:"+tel); } }
一维数组练习题2:
从键盘读入学生成绩,找出最高分,并输出学生成绩等级。
最高得分减去学生成绩小于等于10.A等级;
最高得分减去学生成绩小于等于20.B等级;
最高得分减去学生成绩小于等于30.C等级;
其余.D等级;
1 import java.util.Scanner; 2 3 public class ArrayDemo { 4 public static void main(String args[]) { 5 // 使用Scanner读取学生个数 6 Scanner scan = new Scanner(System.in); 7 System.out.println("请输入学生人数:"); 8 int studentnum = scan.nextInt(); 9 // 创建数组,存储学生成绩,动态初始化 10 int[] grade = new int[studentnum]; 11 // 给数组中的元素赋值 12 int MaxGrade = 0; 13 System.out.println("请输入成绩:"); 14 for (int i = 0; i < grade.length; i++) { 15 grade[i] = scan.nextInt(); 16 17 // 获取最高分 18 19 if (MaxGrade < grade[i]) { 20 MaxGrade = grade[i]; 21 } 22 } 23 System.out.println("最高成绩为:" + MaxGrade); 24 // 根据每个学生成绩与最高分的差值,得到其等级,并输出等级和成绩 25 char level; 26 for (int i = 0; i < grade.length; i++) { 27 if (MaxGrade - grade[i] <= 10) { 28 level = 'A'; 29 } else if (MaxGrade - grade[i] <= 20) { 30 level = 'B'; 31 } else if (MaxGrade - grade[i] < 30) { 32 level = 'c'; 33 } else 34 level = 'D'; 35 System.out.println("student" + i + "Score is" + grade[i] + "," + "grade is" + level); 36 } 37 } 38 }
四,二维数组的使用
1,理解:
对于二维数组的理解,我们可以看成是一维数组array1又作为另一个一维数组array2的元素而存在;
其实从数组底层的运行机制来看,并没有多维数组;
2,int[]x,y[];相当于int[];int[] y[],x是一维数组,y是二维数组;
五,二维数组的练习
1,输出杨辉三角;
1 public class YangHuiTest { 2 public static void main(String args[]) { 3 // 1,声明并初始化二维数组 4 int[][] yanghui = new int[10][]; 5 // 2,给数组的元素赋值 6 for (int i = 0; i < yanghui.length; i++) { 7 yanghui[i] = new int[i + 1]; 8 //2.1 给首末元素赋值 9 yanghui[i][0] = yanghui[i][i] = 1; 10 //2.2给每行的非首末元素赋值 11 if (i > 1) { 12 for (int j = 1; j < yanghui[i].length - 1; j++) { 13 yanghui[i][j] = yanghui[i - 1][j - 1] + yanghui[i - 1][j]; 14 } 15 } 16 } 17 // 遍历二维数组 18 for (int i = 0; i < yanghui.length; i++) { 19 for (int j = 0; j < yanghui[i].length; j++) { 20 System.out.print(yanghui[i][j] + " "); 21 } 22 System.out.println(); 23 } 24 } 25 }
运行结果:
五,Arrays工具类的使用:
Java.util.Arrays即为操作数组的工具类,包含了用来操作数组(比如排序和搜索)的各种方法;
六,数组中的常见异常:
1,数组角标越界的异常:ArrayIndexOutOfBoundsExcetion;
2,空指针异常:NullPointerExcetion;