#今日内容
- IDEA基本使用
- 数组的两种初始化(存储)
- 数组元素访问(取出)
- 数组内存图
- 数组案例(掌握*****)
IDEA基本使用
参考《IDEA安装详解.pdf》
##01. 数组的概念
- 什么是数组?
总结:
1. 什么是数组?
可以存储多个元素,并且必须是同一种数据类型的元素的容器,叫数组
数组定义格式:
格式一(推荐的方式):
数据类型[] 数组名;
格式二:
数据类型 数组名[];
实例:
定义一个数组,存储学生成绩 浮点数
double[] scores
定义一个数组,存储学生的姓名
String[] names
##02. 数组的定义格式一_动态初始化
- 动态初始化格式为?
总结:
什么是动态初始化:
* 我们给出数组的长度,由系统给出默认的初始化值;
int a = 10;
数组的格式:
数据类型[] 数组名 = new 数据类型[长度];
定义一个数组,存储50个学生成绩 浮点数
double[] scores = new double[50];
定义一个数组,存储80个学生的姓名
String[] names = new String[80];
格式解释:
数据类型: 数组中的存储的元素是什么数据类型
[]: 代表的是一维数组
数组名: 数组的名称 按照定义标识符的规则定义即可
new: 关键字,创建了一个数组
数据类型: 跟左边的数据类型是一致的
长度: 代表的是数组中可以存储多少个元素
举例:
##03. 访问数组元素进行获取
- 直接打印数组变量, 结果是什么?
- 索引概念如何解释?
- 如何使用索引获取元素?
总结:
1.直接打印数组变量名, 结果是什么?
数组的地址值
2.索引概念如何解释:
编号的意思,编号都是连续的
3.如何使用索引获取元素
获取元素的格式:
数组名[索引]
给元素赋值格式:
数组名[索引] = 值;
4.数组中最小索引是: 0
最大索引是: 数组的长度-1
##04. Java中的内存划分
- Java中内存主要分为哪5个部分?
总结:
* 栈
存储局部变量 在方法中或者是在方法的声明上()存储的变量
程序的运行都必须要进栈的
* 堆
只要是能被new出来的都是存储在堆内存中
地址值是以十六进制的形式打印出来的
二进制 八进制 十六进制(0-9 a-f)
整数类型 默认为 0
浮点类型 默认为 0.0
字符类型 默认为 '\u0000' --> ' '
布尔类型 默认为 false
引用类型 默认为 null
* 方法区
存储.class文件的
* 本地方法区
跟系统有关的
* 寄存器
跟CPU有关系的
##05. 一个数组的内存图
##06. 两个数组的内存图
- 看图说话
总结: 每new一次, 系统就会在堆内存中开辟一块空间
##07. 两个引用指向同一个数组的内存图
##08. 数组的定义格式二_静态初始化
- 静态初始化的基本格式为?
总结:
静态初始化:
我们给出数组中的元素,由系统自动计算数组的长度
标准的格式:
数据类型[] 数组名 = new 数据类型[]{元素1,元素2,元素3,....};
简化的格式:
数据类型[] 数组名 = {元素1,元素2,元素3,....};
举例:
- 静态初始化有长度吗?
有, 长度是有系统计算的
- 两种初始化的应用场景?
总结:
1. 如果我们知道数组的长度是多少,但是就是不知道数组中要存储的元素是什么,我们使用动态初始化
2. 如果我们知道数组中要存储元素什么了,就不知道数组的长度是多少,就使用静态初始化
一个数组元素存储的是 星期一 星期日
String[] weeks = {"星期一","星期二",...."星期日"};
##09. 常见问题_数组索引越界异常
- 索引越界异常如何产生的?
总结:
1. 访问了不存在的索引 就会报 ArrayIndexOutOfBoundsException : 数组索引越界异常
2.如何解决:
只要访问存在的索引就可以解决这个问题
##10. 常见问题_空指针异常
- 空指针异常如何产生的?
总结:
引用类型变量 没有指向有效的堆内存中的地址了,就会报 NullPointerException: 空指针异常
如何解决:
只要让引用类型变量指向有效的堆存在中的地址即可,解决这个问题
#以下数组相关练习, 必须整明白 !!!
##11. 数组的遍历输出
案例代码:
String[] weeks = {"星期一","星期二","星期三","星期四","星期五","星期六","星期日"};
System.out.println(weeks[0]);
System.out.println(weeks[1]);
System.out.println(weeks[2]);
System.out.println(weeks[3]);
System.out.println(weeks[4]);
System.out.println(weeks[5]);
System.out.println(weeks[6]);
System.out.println("~~~~~~~~~~~~~");
for (int i = 0; i < weeks.length; i++) {
System.out.println(weeks[i]);
}
// 数组名.fori 回车即可
for (int i = 0; i < weeks.length; i++) {
System.out.println(weeks[i]);
}
##12. 求出数组中的最值
- 需求: 获取数组中的最大值
思路: