黑马程序员——基础知识——数组
2015-10-06 07:32
381 查看
------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------
05.01 数组概述和定义格式说明
1、为什么要有数组(容器)为了存储同种数据类型的多个值
2、数组概念
数组是存储同一种数据类型多个元素的集合,也可以看成容器
数组既可以存储基本数据类型,也可以存储引用数据类型
3、数组定义格式
数据类型[ ] 数组名 = new 数据类型[数组的长度];
![](http://img.blog.csdn.net/20151006073211367?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
05.02 数组的初始化动态初始化
1、什么是数组的初始化?
就是为数组开辟连续的内存空间,并为每个元素赋予值
2、如何对数组进行初始化
动态初始化:只指定长度,由系统给出初始化值
int[ ] arr = new int[ 5];
静态初始化:给出初始化值,由系统决定长度
3、动态初始化的格式:
数据类型[ ] 数组名 = new 数据类型[数组长度];
4、案例演示
输出数组名称和数组元素
![](http://img.blog.csdn.net/20151006073237772?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
05.03 java中的内存分配以及栈和堆的区别
1、栈(掌握) 存储局部变量
局部变量:定义在方法声明上和方法中的变量
2、堆(掌握) 存储new出来的数组或对象
3、方法区 面向对象部分讲解(相当于代码区)
4、本地方法区 和系统相关
5、寄存器 给CPU使用
![](http://img.blog.csdn.net/20151006073256310?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
05.04 数组的内存图解1一个数组
1、画图演示
一个数组
![](http://img.blog.csdn.net/20151006073316331?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
05.05 数组的内存图解2二个数组
1、画图演示
二个不同的数组
![](http://img.blog.csdn.net/20151006073338771?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
05.06数组的内存图解3三个引用两个数组
1、画图演示
三个引用,有两个数组的引用指向同一个地址
![](http://img.blog.csdn.net/20151006073353025?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
![](http://img.blog.csdn.net/20151006073406589?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
05.07 数组的初始化静态初始化及内存图
1、静态初始化的格式:
格式:数据类型[] 数组名 = new 数据类型[]{元素1,元素2,…};
简化格式:
数据类型[] 数组名 = {元素1,元素2,…};
2、案例演示
对数组的解释
输出数组名称和数组元素
3、画图演示
一个数组
05.08 数组操作的两个常见小问题越界和空指针
1、案例演示
A:ArrayIndexOutOfBoundsException:数组索引越界异常
原因:你访问了不存在的索引
2、NullPointerException:空指针异常
原因:数组已经不再指向堆内存了,而你还用数组名去访问元素
int[] arr = {1 ,2, 3};
arr = null;
System.out.println(arr[0]);
![](http://img.blog.csdn.net/20151006073552318?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
05.09 数组的操作1遍历
1、案例演示
数组遍历:就是依次输出数组中的每一个元素
数组的属性:arr.length数组的长度
数组的最大索引:arr.length – 1;
![](http://img.blog.csdn.net/20151006073617821?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
05.10 数组的操作2获取最值
1、案例演示
数组获取最值(获取数组中的最大值最小值)
![](http://img.blog.csdn.net/20151006073637267?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
05.11 数组的操作3反转
1、案例演示
数组元素反转(就是把元素对调)
![](http://img.blog.csdn.net/20151006073652394?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
05.12 数组的操作4 查表法
1、案例演示
数组查表法(根据键盘录入索引,查找对应星期)
![](http://img.blog.csdn.net/20151006073713496?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
05.13 数组的操作5基本查找
1、案例演示
数组元素查找(查找指定元素第一次在数组中出现的索引)
![](http://img.blog.csdn.net/20151006073730478?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
05.14 二维数组概述和格式1的讲解
1、二维数组概述 就是在数组中定义数组
2、二维数组格式1
int[] [] arr = new int[3] [2];
3、二维数组格式1的解释
4、注意事项
A以下格式也可以表示二维数组
数据类型 数组名[] [] = new 数据类型[m]
;
数据类型[] 数组名[] = new 数据类型[m]
;
B注意下面定义的区别
int x;
int y;
int x , y;
int[] x; 一维数组
int[] y[]; 二维数组
int[] x , y[]; x是一维数组,y是二维数组
相当于int[] x; int[] y[];
5、案例演示
定义二维数组,输出二维数组名称,一维数组名称,一个元素
![](http://img.blog.csdn.net/20151006073754752?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
05.15 二维数组格式1的内存图解
1、画图展示
画图讲解上面的二维数组名称,一维数组名称,一个元素的值的问题
![](http://img.blog.csdn.net/20151006073820384?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
05.16 二维数组格式2的讲解及其内存图解
1、二维数组格式2
int[][] arr = new int[3][];
2、二维数组格式2的解释
3、案例演示
讲解格式,输出数据,并画内存图
![](http://img.blog.csdn.net/20151006073842161?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
05.17 二维数组格式3的讲解及其内存图解
1、二维数组格式3
int[][] arr ={{1,2,3},{4,5},{6,7,8,9}};,
2、二维数组格式3的解释
3、案例演示
讲解格式,输出数据,并画内存图
![](http://img.blog.csdn.net/20151006073923477?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
05.17 二维数组格式3的讲解及其内存图解
1、二维数组格式3
int[][] arr ={{1,2,3},{4,5},{6,7,8,9}};,
2、二维数组格式3的解释
3、案例演示
讲解格式,输出数据,并画内存图
![](http://img.blog.csdn.net/20151006073939575?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
05.19 二维数组练习2求和
1、案例演示
需求:公司年销售额求和
某公司按照季度和月份统计的数据如下:单位(万元)
第一季度:22,66,44
第二季度:77,33,88
第三季度:25,45,65
第四季度:11,66,99
![](http://img.blog.csdn.net/20151006073955003?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
05.20 思考题java中的参数传递问题及图解
数组属于引用数据类型
本题主要看基本数据类型和引用数据类型的参数传递问题
1、案例演示
看程序写结果,并画内存图解释
![](http://img.blog.csdn.net/20151006074039963?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
![](http://img.blog.csdn.net/20151006074021354?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
05.01 数组概述和定义格式说明
1、为什么要有数组(容器)为了存储同种数据类型的多个值
2、数组概念
数组是存储同一种数据类型多个元素的集合,也可以看成容器
数组既可以存储基本数据类型,也可以存储引用数据类型
3、数组定义格式
数据类型[ ] 数组名 = new 数据类型[数组的长度];
05.02 数组的初始化动态初始化
1、什么是数组的初始化?
就是为数组开辟连续的内存空间,并为每个元素赋予值
2、如何对数组进行初始化
动态初始化:只指定长度,由系统给出初始化值
int[ ] arr = new int[ 5];
静态初始化:给出初始化值,由系统决定长度
3、动态初始化的格式:
数据类型[ ] 数组名 = new 数据类型[数组长度];
4、案例演示
输出数组名称和数组元素
05.03 java中的内存分配以及栈和堆的区别
1、栈(掌握) 存储局部变量
局部变量:定义在方法声明上和方法中的变量
2、堆(掌握) 存储new出来的数组或对象
3、方法区 面向对象部分讲解(相当于代码区)
4、本地方法区 和系统相关
5、寄存器 给CPU使用
05.04 数组的内存图解1一个数组
1、画图演示
一个数组
05.05 数组的内存图解2二个数组
1、画图演示
二个不同的数组
05.06数组的内存图解3三个引用两个数组
1、画图演示
三个引用,有两个数组的引用指向同一个地址
05.07 数组的初始化静态初始化及内存图
1、静态初始化的格式:
格式:数据类型[] 数组名 = new 数据类型[]{元素1,元素2,…};
简化格式:
数据类型[] 数组名 = {元素1,元素2,…};
2、案例演示
对数组的解释
输出数组名称和数组元素
3、画图演示
一个数组
05.08 数组操作的两个常见小问题越界和空指针
1、案例演示
A:ArrayIndexOutOfBoundsException:数组索引越界异常
原因:你访问了不存在的索引
2、NullPointerException:空指针异常
原因:数组已经不再指向堆内存了,而你还用数组名去访问元素
int[] arr = {1 ,2, 3};
arr = null;
System.out.println(arr[0]);
05.09 数组的操作1遍历
1、案例演示
数组遍历:就是依次输出数组中的每一个元素
数组的属性:arr.length数组的长度
数组的最大索引:arr.length – 1;
05.10 数组的操作2获取最值
1、案例演示
数组获取最值(获取数组中的最大值最小值)
05.11 数组的操作3反转
1、案例演示
数组元素反转(就是把元素对调)
05.12 数组的操作4 查表法
1、案例演示
数组查表法(根据键盘录入索引,查找对应星期)
05.13 数组的操作5基本查找
1、案例演示
数组元素查找(查找指定元素第一次在数组中出现的索引)
05.14 二维数组概述和格式1的讲解
1、二维数组概述 就是在数组中定义数组
2、二维数组格式1
int[] [] arr = new int[3] [2];
3、二维数组格式1的解释
4、注意事项
A以下格式也可以表示二维数组
数据类型 数组名[] [] = new 数据类型[m]
;
数据类型[] 数组名[] = new 数据类型[m]
;
B注意下面定义的区别
int x;
int y;
int x , y;
int[] x; 一维数组
int[] y[]; 二维数组
int[] x , y[]; x是一维数组,y是二维数组
相当于int[] x; int[] y[];
5、案例演示
定义二维数组,输出二维数组名称,一维数组名称,一个元素
05.15 二维数组格式1的内存图解
1、画图展示
画图讲解上面的二维数组名称,一维数组名称,一个元素的值的问题
05.16 二维数组格式2的讲解及其内存图解
1、二维数组格式2
int[][] arr = new int[3][];
2、二维数组格式2的解释
3、案例演示
讲解格式,输出数据,并画内存图
05.17 二维数组格式3的讲解及其内存图解
1、二维数组格式3
int[][] arr ={{1,2,3},{4,5},{6,7,8,9}};,
2、二维数组格式3的解释
3、案例演示
讲解格式,输出数据,并画内存图
05.17 二维数组格式3的讲解及其内存图解
1、二维数组格式3
int[][] arr ={{1,2,3},{4,5},{6,7,8,9}};,
2、二维数组格式3的解释
3、案例演示
讲解格式,输出数据,并画内存图
05.19 二维数组练习2求和
1、案例演示
需求:公司年销售额求和
某公司按照季度和月份统计的数据如下:单位(万元)
第一季度:22,66,44
第二季度:77,33,88
第三季度:25,45,65
第四季度:11,66,99
05.20 思考题java中的参数传递问题及图解
数组属于引用数据类型
本题主要看基本数据类型和引用数据类型的参数传递问题
1、案例演示
看程序写结果,并画内存图解释
相关文章推荐
- Java程序员常犯的10个错误
- PHP面试体小总结
- 黑马程序员-java基础(三)-异常体系
- 黑马程序员——IO概述之字符流
- 只有程序员看的懂的面试圣经|如何拿下编程面试
- 下一次技术面试时要问的 3 个重要问题
- 黑马程序员—IO流(2)
- 作为程序员,要取得非凡成就需要记住的15件事。
- Android面试准备:自定义控件(二)
- 如何在面试中面试官的提示下,积极地思考?
- 黑马程序员——String类及相关类
- 国外程序员推荐:每个程序员都应读的书
- 2015笔试面试经验——java基础
- iOS-面试助攻(二)
- 黑马程序员_Java其他对象(System,Runtime,Date,Calendar,Marh-Random)
- 黑马程序员—集合
- 黑马程序员—集合
- 黑马程序员—集合框架
- 黑马程序员—多线程
- 黑马程序员—异常