-
for 循环
- 格式
for(初始化表达式语句;判断条件语句;控制条件语句) {
循环体语句;
}- 执行流程
1.执行初始化表达式语句
2.执行判断条件语句,看其返回值是true还是false
如果是true,就继续执行
如果是false,就结束循环
3.执行循环体语句;
4.执行控制条件语句
5.回到2继续。-
注意事项
初始化表达式语句只执行一次
-
用for循环输出水仙花数
-
while循环
-
格式
while循环的基本格式:
while(判断条件语句) {
循环体语句;
} -
完整格式
初始化条件语句;
while(判断条件语句) {
循环体语句;
控制条件语句;
} -
执行流程
1.执行初始化条件语句;
2.执行判断条件语句,看其返回值是true还是false
如果是true,就继续执行
如果是false,就结束循环
3.执行循环体语句;
4.执行控制条件语句
5.回到2继续。
-
-
do while循环
- 格式
do {
循环体语句;
}while(判断条件语句);-
完整格式
初始化条件语句;
do {
循环体语句;
控制条件语句;
}while(判断条件语句); -
执行流程
1.执行初始化条件语句;
2.执行循环体语句;
3.执行控制条件语句;
4.执行判断条件语句,看其返回值是true还是false
如果是true,就继续执行
如果是false,就结束循环
5.回到2继续。
先执行一次循环体,然后再去判断条件是否成立,如果成立继续循环,不成立循环结束,至少会循环一次
-
怎么去选择for循环,while循环
如果知道循环次数,选for循环。如果不知道循环次数,可以选择while循环,但是得知道循环结束的条件
建议优先考虑for循环,然后是while循环 ,最后是do…while循环
-
死循环
循环没有结束条件,结束不了
两种最简单的死循环格式
while(true){…}
for(;????{…} -
循环的嵌套
请输出一个4行5列的星星(*)图案。
-
快速生成循环语句
10.fori == > for(int i=1;i<=10;i++){}
10.forr ==> for(int i=10;i>=1;i–){}
控制跳转语句
-
什么是控制跳转语句
前面我们已经说过了,Java中的goto是保留字,目前不能使用。虽然没有goto语句可以增强程序的安全性,但是也带来很多不便,
比如说,我想在某个循环执行到某一步的时候就结束,现在就做不了这件事情。
为了弥补这个缺陷,Java就提供了break,continue和return来实现控制语句的跳转和中断。 -
分类
break 中断,continue 继续,return 返回
-
break
-
使用场景
在选择结构switch语句中
在循环语句中 -
作用
退出单层循环
退出多层循环(几乎不使用)
-
-
continue
-
使用场景
在循环语句中
离开使用场景的存在是没有意义的 -
作用
跳出一次循环,执行下一步操作
-
-
return
-
作用
return 就是退出一个方法。跳转到上层调用的方法。
-
-
案例演示
return: 结束当前方法
break: 结束单层循环
continue: 结束当前循环,执行下一次循环
方法
-
为什么要有方法
假设有一个游戏程序,程序在运行过程中,要不断地发射炮弹(植物大战僵尸)。
发射炮弹的动作需要编写100行的代码,在每次实现发射炮弹的地方都需要重复地编写这100行代码,这样程序会变得很臃肿,可读性也非常差。
为了解决代码重复编写的问题,可以将发射炮弹的代码提取出来放在一个{}中,并为这段代码起个名字,
这样在每次发射炮弹的地方通过这个名字来调用发射炮弹的代码就可以了。上述过程中,所提取出来的代码可以被看作是程序中定义的一个方法,
程序在需要发射炮弹时调用该方法即可。-
什么是方法
方法就是完成特定功能的代码块。
在很多语言中都有函数的定义,但是在咱们JAVA语言中,我们将其称之为方法。 -
格式
修饰符 返回值类型 方法名(参数类型 参数名1,参数类型 参数名2 …){
方法体;
return 返回值;
} -
详细格式
(1): 修饰符 比较多,后面会详细介绍。目前使用 public static
(2): 返回值类型 用于限定返回值的数据类型
(3): 方法名 就是一个名称,它的存在是为了方便我们调用方法
(4): 参数类型 限定调用方法时传入参数的数据类型
(5): 参数名 是一个变量,接收调用方法时传入的参数
这个参数其实有一个专业的名词,被称之为形式参数,它的作用是用来接收实际参数的.
(6): 方法体 完成功能的代码
(7): return 结束方法以及返回方法指定类型的值
(8): 返回值 就是功能的结果,由return带回,带回给调用者
-
-
例1:获取两个数中的最大值
-
例2:根据键盘录入的数据输出对应的乘法表
-
方法重载
-
概述
在同一个类中,允许存在一个以上的同名方法,只要它们的参数列表不同,与返回值无关。
参数列表不同:
A:参数个数不同
B:参数类型不同
-
数组
-
为什么要有数组
现在需要统计某公司员工的工资情况,例如计算平均工资、找到最高工资等。假设该公司有80名员工,
用前面所学的知识,程序首先需要声明80个变量来分别记住每位员工的工资,然后在进行操作,这样做会显得很麻烦。
为了解决这种问题,Java就提供了数组供我们使用
结论:
数组是存储多个变量(元素)的东西(容器)
这多个变量的数据类型要一致 -
概念
数组是存储同一种数据类型多个元素的集合。也可以看成是一个容器。
数组既可以存储基本数据类型,也可以存储引用数据类型 -
定义数组的语法格式
int[ ] arr=new int[5];
-
注意
在java中,数组必须初始化才能使用。
所谓初始化,就是需要在内存中为数组开辟空间,并未数组元素进行赋值
-
动态初始化数组:由我们指定数组的长度,由系统为数组的元素赋默认值
int[] arr=new int[6];
可以把中括号放在后面
int arr8[] = new int[6];
-
数组定义完后,每个元素会分配有索引(角标),角标从0开始
-
每 new一次都会在堆内存开辟一个新的空间
-
静态初始化数组:有我们为元素赋值,由系统计算长度
数组有一个属性length,可以获取数组的长度
-
静态初始化的简写方式
int[] arr3={20,30,40,50}
-
数组中最后一个元素的索引=数组长度-1
-
数组的遍历
快速遍历 arr.length.fori
-
数组的遍历
内存分配、栈、堆
Java虚拟机在执行Java程序的过程中会把它管理的内存划分成若干个不同的数据区域
-
栈:存放的是局部变量
局部变量:在方法定义中或者方法声明上的变量都是局部变量。
-
堆:存放的是所有new出来的东西
特点:
-
每一个new出来的东西都会为其分配一个地制值。
-
每一个变量都有一个默认的值
-
- 使用完毕就变成了垃圾,等待垃圾回收器对其回收
-
方法区
-
本地方法区:(和系统相关)
-
寄存器:(cpu使用)
-
一个数组的内存图
定义一个数组,输出数组名称和数组中的元素值,给数组赋值,再次输出数组名称和数组中的元素值
-
两个数组的内存图
定义两个数组,分别输出数组名称和数组中的元素值,分别给两个数组赋值,再次输出数组名称和数组中的元素值
-
三个数组的内存图
定义第一个数组,定义完毕后,给数组元素赋值。赋值完毕后,再输出数组名称和元素。
定义第二个数组,定义完毕后,给数组元素赋值。赋值完毕后,再输出数组名称和元素。
定义第三个数组,把第一个数组的地址值赋值给它。(注意类型一致),通过第三个数组的名称去把元素重新赋值。
最后,再次输出第一个数组数组名称和元素。 -
数组的静态初始化
静态初始化的格式:
格式:数据类型[] 数组名 = new 数据类型[]{元素1,元素2,…};
举例: int[] arr = new int[]{1,2,3};
简化格式:
数据类型[] 数组名 = {元素1,元素2,…};
举例: int[] arr = {1,2,3};
a:定义一个数组,输出数组名称和数组中的元素值