7.2
(1) 数组的概念:
相同数据类型的元素组成的集合[1,6,23,54,87] [1.5,3.0,4.6,23.7]
(2)特点:
数组的长度:通过(arr.length)来调用
(3)定义格式
A: int[]arr = new int[5];
B: int arr[]= new int[5];
推荐是用A方式,B方法要能看懂
(4)一维数组的初始化
A:静态初始化:声明数组分配空间并赋值
举例:int[] arr = new int[]{2,3,5,1,7,4};
简化版:int[] arr = {2,3,5,1,7,4};
错误写法:arr = {1,2,3,45,6,9};
B:动态初始化:就是动态的从键盘上录入数据
举例:int[] arr1 = new int[5];
错误写法:int[5] arr1 = new int[];
C:无论动态、还是静态初始化数组,一定在创建的时候,就指明了数组的长度
(5)如何引用数组元素:数组名+数组下标
(6)如何遍历数组
for(int i = 0;i<arr.length;i++){
System.out.println(javaScore[i]);
}
(7)Java的内存分配
A: 栈区
B: 堆区
C: 方法区
D: 静态域
画图:内存的基本结构
(8)数组内存图
一维数组的内存结构:画图,下面三段代码在内存中的结构
int[] scores = newint[4];
scores[0] = 89;
scores[3] = 90;
String[] strs1 =new String[]{“AA”,”BB”};
String[] strs =new String[4];
strs[0] ="AA";
strs[1] ="BB";
注意:
a:局部变量的概念:
b:栈内存和堆内存的区别
分别写出各类型变量的默认值
垃圾回收器的回收机制
(9)二维数组
A:声明并初始化
//一维:int a[];
//动态int[] a = newint[5];
a[0]=1;
a[1]=2;
a[2]=3;
a[3]=4;
a[4]=5;
//静态int a[]= new int []{1,2,3}
//二维://4行3列,数组长度为4,每个元素是一维数组,长度为3
//动态第一种
int a[][] = {{1,2},{3,4,5},{7,8,9},{15,45}};
//动态第二种
Int a[][]=new int [4][3];
//静态初始化
int[ ][ ] score = new int[ ][ ] { {89,79},{76,86},{59,68} };
用数组名[下标][下标]调用
C:二维数组的长度:
数组名.length 行长度
数组名[下标].length 列长度
D:遍历二维数组
int[][] a=newint [][]{{1,2,3},{1,5,7},{4,8,9}};
for(int i=0;i<a.length;i++){
for(int j=0;j<a[i].length;j++){
System.out.print(a[i][j]);
}
System.out.println();
}
E:
String[][] names;
names = newString[6][5];
String[][] names;
names = newString[2][];
names[0] = newString[5];
names[1] = newString[3];
int[][] i = new int[3][];
i[0] = new int[3];
i[1] = new int[2];
i[2] = new int[4];
i[1][0] = 90;
i[2][1] = 100;
数组的常见异常:
//1.数组下标越界的异常的代码举例
int a[]=new int[5];
a[0]=1;
a[1]=2;
a[2]=3;
a[3]=4;
a[4]=5;
System.out.println(a[6]);
//2.空指针的异常的代码举例
//第一种:
int a[]=new int[5];
a[0]=1;
a[1]=2;
a[2]=3;
System.out.println(a[4]);
//第二种:
boolean a[]=new boolean[5];
System.out.println(a[4]);
//第三种:
String a[]=new String[5];
System.out.println(a[4]);
(10)数组的常用算法
A:求数组元素的最大值、最小值、和、平均数,写出代码
B:数组的复制和反转:
A: int[] array1, array2;
array1 = new int[] { 2, 3, 5, 7, 11, 13,17, 19 };
array2 = array1;
B: int[]array1;
int[] array2;
array1 = new int[] { 2, 3, 5, 7, 11, 13,17, 19 };
array2 = new int[array1.length];
for (int i = 0; i < array2.length; i++){
array2[i] = array1[i];
}
for (int i = 0; i < array2.length; i++){
if (i % 2 == 0) {
array2[i] = i;
}
}
int []array1 = new int[] { 2, 3, 5, 7, 11, 13, 17, 19 };
for(int i=0;i<array1.length/2;i++){
int temp =array1 [i];
array1 [i]=array1 [array1.length-1-i];
array1 [array1.length-1-i]=temp;
}
for(inti=0;i< array1.length;i++){
System.out.println(array1 [i]+”,”);
}