目录
1.while循环
1.1循环语句-while循环
-
while循环完整格式:
初始化语句; while (条件判断语句) { 循环体语句; 条件控制语句; }
-
while循环执行流程:
①执行初始化语句
②执行条件判断语句,看其结果是true还是false
如果是false,循环结束
如果是true,继续执行
③执行循环体语句
④执行条件控制语句
⑤回到②继续
2.循环细节
2.1循环语句-dowhile循环
-
完整格式:
初始化语句; do { 循环体语句; 条件控制语句; }while(条件判断语句);
-
执行流程:
① 执行初始化语句
② 执行循环体语句
③ 执行条件控制语句
④ 执行条件判断语句,看其结果是true还是false
如果是false,循环结束
如果是true,继续执行
⑤ 回到②继续
2.2三种循环的区别
-
三种循环的区别
-
for循环和while循环先判断条件是否成立,然后决定是否执行循环体(先判断后执行)
-
do...while循环先执行一次循环体,然后判断条件是否成立,是否继续执行循环体(先执行后判断)
-
-
for循环和while的区别
-
条件控制语句所控制的自增变量,因为归属for循环的语法结构中,在for循环结束后,就不能再次被访问到了
-
条件控制语句所控制的自增变量,对于while循环来说不归属其语法结构中,在while循环结束后,该变量还可以继续使用
-
-
死循环(无限循环)的三种格式
-
for(;;){}
-
while(true){}
-
do {} while(true);
-
2.3死循环
死循环格式:
for死循环格式 :
for(;;){
}
while死循环格式 :
while(true){
}
do..while死循环格式 :
do{
}while(true)
2.4跳转控制语句
-
跳转控制语句(break)
-
跳出循环,结束循环
-
-
跳转控制语句(continue)
-
跳过本次循环,继续下次循环
-
-
注意: continue只能在循环中进行使用!
3.Random
3.1Random产生随机数
-
概述:
-
Random类似Scanner,也是Java提供好的API,内部提供了产生随机数的功能
-
API可以简单理解为Java已经写好的代码
-
-
-
使用步骤:
-
导入包
import java.util.Random;
-
创建对象
Random r = new Random();
-
产生随机数
int num = r.nextInt(10);
解释: 10代表的是一个范围,如果括号写10,产生的随机数就是0-9,括号写20,参数的随机数则是0-19
-
4.数组
4.1数组介绍
数组就是存储数据长度固定的容器,存储多个数据的数据类型要一致。
4.2数组的定义格式
(1)第一种格式
数据类型[] 数组名
(2)第二种格式
数据类型 数组名[]
4.3数组的动态初始化
概念:数组动态初始化就是只给定数组的长度,由系统给出默认初始化值。
格式:数据类型[] 数组名 = new 数据类型[数组长度];
int[] arr = new int[5];
动态初始化格式解释:
-
等号左边:
-
int:数组的数据类型
-
[]:代表这是一个数组
-
arr:代表数组的名称
-
-
等号右边:
-
new:为数组开辟内存空间
-
int:数组的数据类型
-
[]:代表这是一个数组
-
5:代表数组的长度
-
4.4数组元素访问
索引:每一个存储到数组的元素,都会自动的拥有一个编号,从0开始。
这个自动编号称为数组索引(index),可以通过数组的索引访问到数组中的元素。
访问数组元素格式:
数组名[索引];
4.5内存分配
内存概述:内存是计算机中的重要原件,临时存储区域,作用是运行程序。我们编写的程序是存放在硬盘中的,在硬盘中的程序是不会运行的。必须放进内存中才能运行,运行完毕后会清空内存。Java虚拟机要运行程序,必须要对内存进行空间的分配和管理。
Java中的内存分配:栈内存和堆内存
4.6数组的静态初始化
-
完整版格式
数据类型[] 数组名 = new 数据类型[]{元素1,元素2,...};
-
简化版格式
数据类型[] 数组名 = {元素1,元素2,...};
4.7数组操作的两个常见问题
(1)索引越界
-
出现原因
public class ArrayDemo { public static void main(String[] args) { int[] arr = new int[3]; System.out.println(arr[3]); } }
数组长度为3,索引范围是0~2,但是我们却访问了一个3的索引。
程序运行后,将会抛出ArrayIndexOutOfBoundsException 数组越界异常。在开发中,数组的越界异常是不能出现的,一旦出现了,就必须要修改我们编写的代码。
-
解决方案
将错误的索引修改为正确的索引范围即可!
(2)空指针异常
-
出现原因
public class ArrayDemo { public static void main(String[] args) { int[] arr = new int[3]; //把null赋值给数组 arr = null; System.out.println(arr[0]); } }
arr = null 这行代码,意味着变量arr将不会在保存数组的内存地址,也就不允许再操作数组了,因此运行的时候会抛出 NullPointerException 空指针异常。在开发中,数组的越界异常是不能出现的,一旦出现了,就必须要修改我们编写的代码。
-
解决方案
给数组一个真正的堆内存空间引用即可!
4.8数组遍历
数组遍历:就是将数组中的每个元素分别获取出来,就是遍历。遍历也是数组操作中的基石。
总结:
本次笔记我们只要是学习了循环语句和数组,其中我认为需要加强记忆的是关于跳转控制语句(break)指的是跳出循环,结束循环;跳转控制语句(continue)指的是跳过本次循环,继续下次循环;注意:continue只能在循环中进行使用。其次还需要对栈内存和堆内存进行更加深入的学习并更好的掌握,栈内存是在方法运行时使用的内存,比如main方法运行,进入方法栈中执行;堆内存是存储对象或者数组,new来创建的,都存储在堆内存中。特别需要加强的是数组遍历和三种循环之间的区别使用,以及什么时候使用那种循环更利于我们开发,以及数组操作过程中遇到的问题也需要尽量避免,索引越界异常和空指针异常都可多熟悉掌握,避免报错。大概就这些啦~