——Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ——-
A:什么是循环结构
循环语句可以在满足循环条件的情况下,反复执行某一段代码,这段被重复执行的代码被称为循环体语句,当反复执行这个循环体时,
需要在合适的时候把循环判断条件修改为false,从而结束循环,否则循环将一直执行下去,形成死循环
B:循环结构的分类
for循环
while循环
C:循环结构for语句的格式:
for(初始化表达式语句;判断条件语句;控制条件语句) {
循环体语句;
}
D:执行流程:
a:执行初始化语句
b:执行判断条件语句,看其返回值是true还是false
如果是true,就继续执行
如果是false,就结束循环
c:执行循环体语句;
d:执行控制条件语句
e:回到B继续。
E: 注意事项:
初始化表达式语句只执行一次
A:案例演示
需求:请在控制台输出数据10-1
class ForTest2 {
public static void main(String[] args) {
// 请在控制台输出数据10-1
// 原始做法
System.out.println(10);
System.out.println(9);
System.out.println(8);
System.out.println(7);
System.out.println(6);
System.out.println(5);
System.out.println(4);
System.out.println(3);
System.out.println(2);
System.out.println(1);
System.out.println("****************");
// 使用循环改进
for(int x = 10 ; x >= 1 ; x--){
System.out.println(x);
}
}
}
B:注意事项
a:判断条件语句无论简单还是复杂结果是boolean类型。
b:循环体语句如果是一条语句,大括号可以省略;如果是多条语句,大括号不能省略。建议永远不要省略。
c:一般来说:有左大括号就没有分号,有分号就没有左大括号
A:案例演示
需求:在控制台输出所有的”水仙花数”
所谓的水仙花数是指一个三位数,其各位数字的立方和等于该数本身。
举例:153就是一个水仙花数。
153 = 1*1*1 + 5*5*5 + 3*3*3 = 1 + 125 + 27 = 153
class ForTest5 {
public static void main(String[] args) {
// 完成一下
for(int x = 100 ; x <= 999 ; x++){
// 获取当前数的每一位数
int ge = x%10 ;
int shi = x/10%10 ;
int bai = x/10/10%10 ;
// 获取立方和
int y = ge*ge*ge + shi*shi*shi + bai*bai*bai ;
// 判断当前的数是否与y相等,如果相等就是水仙花数
if(x == y){
System.out.println(x);
}
}
}
}
A:循环结构while语句的格式:
while循环的基本格式:
while(判断条件语句) {
循环体语句;
}
完整格式:
初始化语句;
while(判断条件语句) {
循环体语句;
控制条件语句;
}
B:执行流程:
a:执行初始化语句
b:执行判断条件语句,看其返回值是true还是false
如果是true,就继续执行
如果是false,就结束循环
c:执行循环体语句;
d:执行控制条件语句
e:回到b继续。
C:案例演示
需求:在控制台输出10次"helloworld"
class DeadLoopDemo {
public static void main(String[] args) {
// 在控制台输出10次"HelloWorld"
// for循环实现
/*
for(int x = 1 ; x <= 10 ; ){
System.out.println("HelloWorld");
}
*/
// 使用while循环实现
/*
int x = 1 ;
while(x <= 10){
System.out.println("HelloWorld");
// x++ ;
}
A:循环结构do...while语句的格式:
do {
循环体语句;
}while(判断条件语句);
完整格式;
初始化语句;
do {
循环体语句;
控制条件语句;
}while(判断条件语句);
B:执行流程:
a:执行初始化语句;
b:执行循环体语句;
c:执行控制条件语句;
d:执行判断条件语句,看其返回值是true还是false
如果是true,就继续执行
如果是false,就结束循环
e:回到b继续。
C:案例演示
需求:在控制台输出10次"helloworld"
class DeadLoopDemo {
public static void main(String[] args) {
// 在控制台输出10次"HelloWorld"
// for循环实现
/*
for(int x = 1 ; x <= 10 ; ){
System.out.println("HelloWorld");
}
*/
// 使用while循环实现
/*
int x = 1 ;
while(x <= 10){
System.out.println("HelloWorld");
// x++ ;
}
*/
}
}
三种循环语句的区别:
(1):do...while循环至少执行一次循环体。
而for,while循环必须先判断条件是否成立,然后决定是否执行循环体语句。
(2):A: 如果你想在循环结束后,继续使用控制条件的那个变量,用while循环,否则用for循环。不知道用for循环。
因为变量及早的从内存中消失,可以提高内存的使用效率。
B:建议优先考虑for循环,然后是while循环 ,最后是do...while循环
A:一定要注意控制条件语句控制的那个变量的问题,不要弄丢了,否则就容易死循环。
B:两种最简单的死循环格式
while(true){...}
for(;;){...}
A:案例演示
需求:请输出一个4行5列的星星(*)图案。
如图:
*****
*****
*****
*****
注意:
System.out.println("*");和System.out.print("*");的区别
package reflect;
public class Test7 {
public static void main(String[] args) {
// 请输出一个4行5列的星星(*)图案。
// 原始做法
System.out.println("*****");
System.out.println("*****");
System.out.println("*****");
System.out.println("*****");
System.out.println("-----------");
// 使用循环在进行改进
for(int y = 1 ; y <= 4 ; y++){
for(int x = 1 ; x <= 5 ; x++){
System.out.print("*");
}
System.out.println();
}
}
}
B:结论:
外循环控制行数,内循环控制列数
A:案例演示
需求:请输出下列的形状
*
**
***
****
*****
// 外循环控制行数,内循环控制列数
// 在控制台输出4行5列的*
for(int x = 1 ; x <= 4 ; x++){
for(int y = 1 ; y <= 5 ; y++){
System.out.print("*");
}
System.out.println();
}
System.out.println("-----------");
/*
* 第一行一个* for(int y = 1 ; y <= 1 ; y++)
** 第二行二个* for(int y = 1 ; y <= 2 ; y++)
*** 第三行三个* for(int y = 1 ; y <= 3 ; y++)
**** 第四行四个* for(int y = 1 ; y <= 4 ; y++)
***** 第五行五个* for(int y = 1 ; y <= 5 ; y++)
*/
for(int x = 1 ; x <= 5 ; x++){
for(int y = 1 ; y <= x ; y++){
System.out.print("*");
}
System.out.println();
}
A:什么是控制跳转语句
前面我们已经说过了,Java中的goto是保留字,目前不能使用。虽然没有goto语句可以增强程序的安全性,但是也带来很多不便,
比如说,我想在某个循环执行到某一步的时候就结束,现在就做不了这件事情。
为了弥补这个缺陷,Java就提供了break,continue和return来实现控制语句的跳转和中断。
B:控制跳转语句的分类
break 中断
continue 继续
return 返回
C:break的使用场景
(1):在选择结构switch语句中
(2):在循环语句中
注意:离开使用场景的存在是没有意义的
D:作用
a:退出单层循环
b:退出多层循环(几乎不使用)
要想实现这个效果,就必须知道一个东西;带标签的语句;
格式:标签名:语句
A:continue的使用场景
(1):在循环语句中
(2):离开使用场景的存在是没有意义的
B:作用
a:跳出一次循环,执行下一步操作
(1)方法:就是完成特定功能的代码块。
注意:在很多语言里面有函数的定义,而在Java中,函数被称为方法。
(2)格式:
修饰符 返回值类型 方法名(参数类型 参数名1,参数类型 参数名2...) {
方法体语句;
return 返回值;
}
修饰符:目前就用 public static。后面再详细讲解其他修饰符
返回值类型:就是功能结果的数据类型
方法名:就是起了一个名字,方便调用该方法。
参数类型:就是参数的数据类型
参数名:就是变量
参数分类:
实参:实际参与运算的数据
形参:方法上定义的,用于接收实际参数的变量
方法体语句:就是完成功能的代码块
return:结束方法
返回值:就是功能的结果,由return带给调用者。
(3)两个明确:
返回值类型:结果的数据类型
参数列表:参数的个数及对应的数据类型
(4)方法调用
A:有明确返回值的方法
a:单独调用,没有意义
b:输出调用,不是很好,因为我可能需要不结果进行进一步的操作。
c:赋值调用,推荐方案
B:void类型修饰的方法
a:单独调用
(5)方法的注意事项
A:方法不调用不执行
B:方法之间是平级关系,不能嵌套定义
C:方法定义的时候,参数是用,隔开的
D:方法在调用的时候,不用在传递数据类型
E:如果方法有明确的返回值类型,就必须有return语句返回。
(6)方法重载
在同一个类中,方法名相同,参数列表不同。与返回值无关。
参数列表不同:
参数的个数不同。
参数的对应的数据类型不同。
(7)方法重载案例
不同的类型的多个同名方法的比较。