培训日记三
流程控制:
在一个程序执行过程中,每一个语句都是顺序执行的,对程序的结果有直接的影响,也就是说,程序的流程对我们 的结果有直接的影响,所以我们必须要搞清楚,我们的各个语句的执行流程,很多时候我们要通过控制语句的执行 顺序来实现我们的实现我们的功能。
1、顺序执行:
public class Hello{
public static void main(String[] args){
//顺序执行,根据编写的代码,从上到下执行
System.out.println(1);
System.out.println(2);
System.out.println(3);
System.out.println(4);
}
}
2、判断语句:
2.1、判断语句 if
格式:
if(关系表达式){
语句体;
}
程序语句;
执行流程:首先先判断关系表达式结果,如果他的结果是true,这个时候会执行语句体,如果是false,那么不执行 语句体。
public class Hello{
//程序入口
public static void main(String[] args){
//if语句
System.out.println("程序的开始");
//定义两个变量
int a=20;
int b=30;
//变量使用if语句
if(a==b){
System.out.println("a等于b");
}
int c=30;
if(c==b){
System.out.println("c等于b");
}
System.out.println("程序的结束");
}
}
2.2、判断语句if–else
格式:
if(关系表达式){
语句体1;
}else{
语句体2;
}
执行顺序:
首先判断关系表达式看其结果,如果是true,那么执行语句体1,如果false,执行语句体2
public class Hello{
//程序的入口
public static void main(String[] args){
//判断给定的数据是奇数还是偶数
int a=1;
if(a%2==0){
System.out.println("a是偶数");
}else{
System.out.println("a是个奇数");
}
System.out.println("程序结束!");
}
}
2.3、判断语句if …else if…
格式:
if(关系表达式1){
语句体1
}else if(关系表达式2){
语句体2;
}else if(关系表达式3){
语句体3;
}else{
语句体4;
}
执行流程:
首先判断关系表达式1,如果是true,执行语句体1,如果是false,那么就判断关系表达式2,如果true,那么在执 行语句体2,如果是false,那么就判断关系表达式3,如果是true,那么执行语句体3,如果是false,那么执行语句 体4。
public class Hello{
//程序的入口
public static void main(String[] args){
/*
* x>=3 y=2x+1;
* -1<=x<3 y=2x;
* x<-1 y=2x-1;
* */
int x=2;
int y;
if(x>=3){
y=2*x+1;
}else if(x>=-1&&x<3){
y=2*x;
}else{
y=2*x-1;
}
System.out.println("y的值是:"+y);
}
}
2.4、语句练习:
指定考试成绩,判断学生等级
90-100 优秀
80-89 好
70–79 良
60-69 及格
60以下 不及格
public class Hello{
public static void main(String[] args){
demo();
}
public static void demo(){
int soure=100;
if(scour<0 || score>100){
System.out.println("你这个成绩输入有问题!");
}else if(score>=90 && score<=100){
System.out.println("你的成绩属于优秀!");
}else if(score>=80 && score<90){
System.out.println("你的成绩属于优秀!");
}else if(score>=70 && score<80){
System.out.println("你的成绩属于优秀!");
}else if(score>=60 && score<70){
System.out.println("你的成绩属于优秀!");
}else{
System.out.println("你的成绩不及格");
}
}
}
2.5、if语句和三元运算互换
public class Hello{
//程序的入口
public static void main(String[] args){
int a=10;
int b=20;
//保存我们a和b中的最大值
int c;
if(a>b){
c=a;
}else{
c=b;
}
c=a>b?a:b//可代替上方步骤
}
}
3、选择语句:
switch语句格式:
switch(表达式){
case 常量值1:
break;
case 常量值2:
break;
case 常量值3:
break;
default:
语句体;
break;
}
执行流程:
首先判断一下表达式的值, 其次,和case进行比较,一旦对应上,就会执行相关的语句,在执行过程中,遇见break就会结束,最后,如果所 有的case和表达式不匹配,就会执行default语句体的语句,然后程序结束。
switch语句中:
表达式的类型:byte,short,int,char,enum(枚举) jdk1.5中才有的,面试时可能会问到。
jdk1.7后可以接受字符串。
case的穿透性:
在switch语句中,如果case后面不写break,将出现穿透现象,也就是不会判断下一个case的值,直接向后运行, 知道遇见break,或者整体switch结束。
上述程序总,执行case5后,由于没有break,程序一直往后走,不会判断case的值,直接运行到下一个break或者 switch结束,由于有我们的case的穿透性,所以对我们初学者加上我们break。
4、循环语句:
循环语句可以在满足循环条件的情况下,反复执行某一段代码,这段重复的代码执行称为循环。当我反复执行这个 循环的,需要在合适的场合给他把判断条件修改为false,从而结束我们的循环,否则循环会一直执行下去。
4.1、for循环
格式:
for(初始化表达式1;布尔类型表达式2;步进表达式4){
循环体3
}
执行流程:
1–2--3—4---2–3---------一直到了不满足我们的布尔表达式结束。
初始化表达式1:负责完成循环变量的初始化
布尔类型表达式2:负责判断是否满足循环条件,不满足就退出循环
循环体3:具体的执行语句
步进表达式:循环后,循环条件涉及到的变量的变化情况。
循环练习:使用循环,计算1-100之间的偶数和
4.2、while循环
格式:
初始化表达式1
while(布尔表达式2){
循环体3;
步进表达式4;
}
执行流程:
1----2----3----4----2----3----4— 执行不满足我们的布尔表达式的时候
初始换表达式1:负责循环变量的初始化
布尔类型表达式2:负责判断是否满足循环条件,不满足择退出
步进表达式3:循环变量的变化情况
while计算我们的1-100的和:
4.3、do…while循环(不常用)
初始化表达式0
do{
循环体1;
步进表达式2;
}while(布尔表达式3);
执行流程:
1—2-----3----1-----2—3---直到我们的布尔类型表达式不满足条件,循环结束
循环体1:具体的执行语句
步进表达式2:负责改变我们循环变量
布尔类型表达式3:就是我们的判断条件
do…while循环的特点:无条件执行一次循环,即使我们将循环条件写成false。这样循环有风险,初学者不建议使 用,do…while
4.4、循环语句的区别:
控制条件语句所控制的变量,在for循环结束以后,就不能在使用了,而while循环结束以后还可以使用我们的循环 变量,原因是for循环结束,该变量从内存中消失,能够提高我们的内存的使用率。
在后面我们遇见题目,先判断该题是否有循环次数,如果能,就选择for循环,如果不能,选择我们的while
5、跳转语句:
break:
使用场景:终止我们的switch或者循环的时候。如果离开的我们的实用场景,没有任何意义。
continue:
使用场景:结束本次循环,继续下一次循环
扩展:
死循环:
也就是我们的循环中条件运算是true,死循环是永远不会结束的循环,比如while(true){}。
在后期开发中,会使用死循环的场景,比如我们需要读取用户的输入的数据,但是用户的输多少我们不知道,也只 能使用死循环,当用户不想输入数据的售后,就可以结束我们的循环。用我们额break的语句去结束。
嵌套循环:
是一个循环的循环体中是另外一个循环你,比如我们的for循环中还有一个循环,循环的总次数就是我们的外循环 次数*内循环的次数.
嵌套循环的格式:
for(初始化表达式1;循环条件2;步进表达式){ 循环体1
for(初始化表达式2;循环条件3;步进表达式){ 循环体
}
}
一道面试题
int i = 0;
for(i++ ; i++<10; i++)
//可将“i++<10”看成i<10,i++
//for(i++ ; i<10,i++ ; i++);这是不对的编译方式
//i=12
System.out.println(++i);//13
九九乘法表:
水仙花数
完数
下落球
public static void main(String[] args){
/* 一球从100米高度*下落,每次落地后反跳回原来高度的一半;在下落,求它在第10次落地时,共经过多少米?第10次反弹多高 */
double height=100;
double total=height;
for(int i = 1; i<=10 ; i++){
height/=2;
System.out.println("第"+i+"次反弹的高度"+height);
if(i==10){
break;
}
total+=height*2;
}
System.out.println("第10次落地经历的路程"+total);
}
组合
本文地址:https://blog.csdn.net/qq_40793592/article/details/107700024