在学习Java的这段时间里,我深切的感到了数组的重要性,他可以培养编程思想,几乎从开始一直到培训结束一直在用,现在有时间正好总结一下。。。。。
1,数组概述及格式
• 数组:同一种类型数据的集合。其实数组就是一个容器。 •只要是容器,就得重点掌握。
• 数组的好处 •可以自动给数组中的元素从0开始编号,方便操作这些元素。
2,数组的定义格式
•A:当不明确数组中的元素时,动态初始化 举例 : int[] arr = new int 3; arr[0] = 3;B:当明确数组中的元素时,静态初始化 举例 : int[] arr = new int[]{1,2,3,4,5}; int[] arr = {1,2,3,4,5};
•什么时候使用数组? •当要操作的同种数据类型的数据是多个的时候,你就得想着先把这些数据用数组进行存储。
•A:当不明确数组中的元素时,动态初始化 举例 : int[] arr = new int 3; arr[0] = 3;B:当明确数组中的元素时,静态初始化 举例 : int[] arr = new int[]{1,2,3,4,5}; int[] arr = {1,2,3,4,5};
•什么时候使用数组? •当要操作的同种数据类型的数据是多个的时候,你就得想着先把这些数据用数组进行存储。
数组的内存图
•A:栈 •存储的是局部变量(在函数中定义的变量)。
•变量被使用完后,立即自动释放。
•B:堆 •存储的是实体(数组和对象)。
•实体:new出来的东西,可以存放很多数据的东西。
• 堆内存数据的特点 •每个实体都有内存地址
• 堆内存中的变量都有默认初始化值 •int --> 0
•double --> 0.0
•boolean --> false
•char --> '\u0000' 空字符,unicode编码。
•实体:new出来的东西,可以存放很多数据的东西。
• 堆内存数据的特点 •每个实体都有内存地址
• 堆内存中的变量都有默认初始化值 •int --> 0
•double --> 0.0
•boolean --> false
•char --> '\u0000' 空字符,unicode编码。
•当实体不在被使用的时候,会在jvm空闲的时候,通过java垃圾回收机制使其自动释放。
•C:方法区 后面讲。(static)
•D:本地方法区 调用是Windows系统底层资源,我们不用考虑。
•E:寄存器 和CPU相关。我们不用考虑。
3,数组的常见问题
•A:当你访问到数组中的最后一个元素时,还想继续访问,这个时候,会发生角标越界异常。 •ArrayIndexOutOfBoundsException
•A:当你访问到数组中的最后一个元素时,还想继续访问,这个时候,会发生角标越界异常。 •ArrayIndexOutOfBoundsException
举例 int[] arr = new int 3; System.out.println(arr 3);• B:当数组不在指向某个实体时,你还继续访问,就会发生空指针异常。 •NullPointerException
举例 int[] arr = new int 3; arr = null; System.out.println(arr 1);
4,数组的操作
4,数组的操作
•数组遍历
•数组获取最值
•基本查找
•数组的参数传递
5,数组的练习
•数组反转
•数组反转
6,数组的应用
•查表法(星期的示例)
•查表法(星期的示例)
7,二维数组概述和定义
• 格式1:int[][] arr = new int 3 2; •A:定义了名称为arr的二维数组
•B:二维数组中有3个一维数组
•C:每一个一维数组中有2个元素
•D:一维数组的名称分别为arr[0], arr 1, arr 2 •arr:二维数组名
•arr 1:二维数组中的第二个一维数组名
•arr 1 1:二维数组中的第二个数组的第二个元素
• 格式1:int[][] arr = new int 3 2; •A:定义了名称为arr的二维数组
•B:二维数组中有3个一维数组
•C:每一个一维数组中有2个元素
•D:一维数组的名称分别为arr[0], arr 1, arr 2 •arr:二维数组名
•arr 1:二维数组中的第二个一维数组名
•arr 1 1:二维数组中的第二个数组的第二个元素
•E:给第一个一维数组1脚标位赋值为78写法是:arr[0] 1 = 78;
•格式2:int[][] arr = new int 3[]; •A: 二维数组中有3个一维数组
•B: 每个一维数组都是默认初始化值null
•C: 可以对这个三个一维数组分别进行初始化 •arr[0] = new int 3;
•arr 1 = new int 5;
•arr 2 = new int 7
•B: 每个一维数组都是默认初始化值null
•C: 可以对这个三个一维数组分别进行初始化 •arr[0] = new int 3;
•arr 1 = new int 5;
•arr 2 = new int 7
•格式3:int[][] arr = {{3,8,2},{2,7},{9,0,1,6}};arr 2.length •A:二维数组有3个一维数组。
•B: •第一个一维数组有3个元素
•第二个一维数组有2个元素
•第三个一维数组有4个元素
二维数组的应用
•二维数组的遍历
•int[][] arr2 = new int 2 3;
•二维数组的遍历
•int[][] arr2 = new int 2 3;
public static void printArray2(int[][] arr2){
for(int i=0; i<arr2.length; i++){
for(int j=0; j<arr2 i.length; j++){
System.out.print(arr2ij+" "); }
System.out.println(); }}
•二维数组的应用
•求一年的销售总额。public static void printArray2(int[][] arr2){
•二维数组的应用
•求一年的销售总额。public static void printArray2(int[][] arr2){
int sum = 0;
for(int i=0; i<arr2.length; i++) {
for(int j=0; j<arr2i.length; j++){
sum = sum + arrij; }
System.out.println("sum =" + sum);
}}
学习数组思路要清晰,嵌套3,4也很正常,实在不会就画画图,这就是我对数组的理解。。。