一、流程控制
顺序结构:
程序执行先找到入口函数main(),然后再一行一行顺序往下执行,并且所有的代码都会被执行到
顺序结构可以帮助我们进行计算、输出等操作,但是不能选择性的执行代码
分支结构:
分支结构可以帮助我们先做判断,根据判断的结果,选择性的执行代码
单分支结构
if(判断条件){
符合判断条件后要执行的代码,如果不符合条件,此句代码会被跳过
}
多分支结构
public static void main(String[] args) {
char gender = '男';
if(gender == '男'){//判断条件
System.out.println("男生可以玩滑板");//如果符合判断条件就执行此处代码1
}else{
System.out.println("女生可以化妆");//如果不符合判断条件,就执行此处代码2
}
}
嵌套分支结构
if(判断条件1){
满足判断条件1,执行代码1
}else if(判断条件2) {
满足判断条件2,执行代码2
}else if(判断条件 3){
满足判断条件3,执行代码3
}else{
以上条件都不满足,执行代码4
}
选择结构:
public static void main(String[] args) {
int a = 9;
switch(a) {
//Ctrl+Alt+向下 快速向下复制代码
case 1 : System.out.println(1); break;
case 2 : System.out.println(2); break;
case 3 : System.out.println(3); break;
case 4 : System.out.println(4); break;
case 5 : System.out.println(5); break;
default : System.out.println(0);
}
}
注意事项:
变量a支持的类型byte short char int String
变量a的数据类型与case后value的数据类型必须一致
如果没有添加break,并且又有case被匹配到,会发生穿透的现象,包括deafult
case的个数 是否加break 是否加default 完全根据自己的业务来决定
如果添加了default保底选项,又没有任何一个case被匹配到,就会执行default后的语句
一般我们习惯在每个case后加break【这个只是建议,具体还是根据业务来写】
循环结构:
当你想多次重复干某件事的时候,可以使用循环结构
注意事项:开始条件只会在第一轮执行一次,剩下两个条件才会执行多次
//for(开始条件; 循环条件 ; 更改条件 ) {循环体,每次符合循环条件后执行的代码}
for(int i = 1; i<= 10 ; i++ ) {
System.out.println(i);
}
for循环
1.格式:
public static void main(String[] args) {
for(开始条件; 循环条件 ; 更改条件) {
符合循环条件后执行的循环体
}
}
2.循环的开始条件只会在第一轮开始的时候执行一次,后续均不再执行
3.循环结构适合我们在程序中需要反复执行某一件事时使用
4.循环能够执行几次,取决于循环变量能够取到几个值,而不是循环变量的取值范围
public static void main(String[] args) {
//比如此处循变量i的取值范围是8~8888,但是循环只执行了4次
//因为i只取到了4个值,分别是8,88,888,8888
for (int i = 8; i <= 8888; i=i*10+8) {
System.out.println(i);
}
}
5.我们可以通过break直接结束当前循环的剩余所有轮
6.我们可以通过continue结束本轮循环continue后面的语句,直接开始下一轮循环
嵌套for循环
1.外层循环控制的是执行的轮数,内层循环控制的是这一轮中执行的次数
2.外层循环控制的是图形的行数,内层循环控制的是这一行的列数
3.案例中的经验:
如果把内层循环循环变量的最大值设置为一个固定值,打印出来的是矩形
//*****
//*****
//*****
for(int i = 1; i<=3 ;i++) {//外层循环,控制的轮数,执行3轮
for(int j = 1;j<=5;j++) {//内层循环,控制的是每轮的次数,每轮执行5次
System.out.print("*");
}
System.out.println();//本打印语句用来换行
}
如果把内层循环的循环变量j,设置成随着外层循环循环变量i的变化而变化,打印出来的是直角三角形
System.out.println("*********打印左直角三角形********");
for(int i = 1;i<=6;i++) {//外层循环控制的是行数
/**矩形每行中*的个数是固定不变的
* 而左直角三角形中每行星星个数的最大值是随着行数的变化而变化的,行i星i*/
for(int j = 1; j<=i;j++) {//内层循环控制的是这一行的列数
System.out.print("*");
}
System.out.println();//打印空白行用来换行,注意一定要内层循环结束
}