Core Java第五章知识点总结——数组
知识点预览
数组的概念
数组的语法
数组排序
数组扩充
二维数组与高维数组
数组的概念
1. 什么是数组
2. 数组的概念:一次性的定义多个变量
数组的语法
1. 数组的声明
a) int [] a;------->项目开发推荐使用
b) int a[];
2. 数组的空间分配
a) a = new int[5];
b) 先声明、后分配
int [] a;
a = new int[5];
c) 声明、分配同时进行
int [] a = new int[5];
3. 数组在内存中的表示
a) int [] a = new int[5];
空间连续、挨着,密不可分
4. 数组的特点
a) 数组所创建的内存空间只能存储相同数据类型的数据
b) 数组所分配的内存空间是连续的
c) 数组所分配的内存空间是不可扩充的
5. 数组存储数据的值
a) 数组元素的默认值(各种各样的0)
说明:’\u0000’:Unicode编码
局部变量:先赋值后使用
数组元素:未初始化,有默认值
b) 数组的显式赋值
6. 数组的遍历
a) 按照一定的顺序依次操作数组的每一个元素
b) for循环(引入下标)
7. 数组的length属性
a) arrayVar.length:用于获得数组长度
8. 封装遍历函数
a) 经常使用的代码------>进行封装
9. 数组创建的其他方式
a) int [] a = {1,2,3};
b) int [] b = new int[]{11,22,33};
c) 说明:以上两种方式不可以拆开写int [] b = new int[3]{11,22,33}; 错误
d) 补充:C#:int [] b = new int[3]{11,22,33}; 正确
10. 数组常见错误
a) 开发:语法、思路、设计思想、积累常见错误
b) java.lang.ArrayIndexOutOfBoundsException数组越界异常
如:int [] a = new int[3]; System.out.println(a[4]);
11. 思考题
byte b[] = {1,2,3};
byte a [] = b;
a[0] = 10;
System.out.println(b[0]);
先思考……
答案:10
数组排序
1. java.util.Arrays.sort(array);
数组扩充
1. 思路
int [] a = new int[3];
a) 创建一个新的数组 int [] b = new int[6];
b) 把老数组的数据复制到新数组 a---->b(复制)
c) 让老数组指向新数组的地址 a = b;
2. 第一种方式
int [] a = new int[3];
int [] b = new int[a.length * 2];
for(int i = 0; i < a.length;i ++){
b[i] = a[i];
}
a = b;
3. 第二种方式System.arraycopy()
int [] a = new int[3];
int [] b = new int[a.length * 2];
System.arraycopy(a,0,b,0,a.length);
a = b;
4. 第三种方式 java.util.Arrays.copyOf
前提:JDK 1.6开始提供这个方法
int [] a = new int[3];
int [] b = java.util.Arrays.copyOf(a,a.length);
a = b;
注意:数组扩充不能在原有基础上
二维数组与高维数组
1. 什么是二维数组
int[][] a = new int [2][3];
2:低维度 行
3:高维度 列
2. 二维数组的使用
a) 二维数组的赋值
i. a[0][0] = 10;……a[1][2] = 22;
ii. int [][] b = {{11,22},{21,22}};
b) 二维数组的本质
一维数组的一维数组(Java里的二维数组不是真正意义上的二维数组)
int [][] a = newint [2][3];
c) 二维数组的长度
i. a.length ------>外层数组(行)
ii. a[0] .length ------>内层数组(列)
d) 二维数组的遍历
int i = 0; i< a.length;i++
int j = 0; j < a[i].length;j++
a[i][j];
e) 不规则的二维数组
int [][] a = newint [2][];
a[0] = new int[3];
a[1] = newint[2];
3. 高维数组
三维数组: 一维数组的一维数组的一维数组
四维数组: 一维数组的一维数组的一维数组的一维数组
……
注意复习以前知识:接下来学习面向对象
学习面向对象,不仅要学习面向对象的语法,更要注重面向对象的思想和解决问题的方式。