JavaSE 基础语法 -逻辑控制

JavaSE 基础语法 -逻辑控制 在我们平常的生活中我们每天都在进行各种判断和重复操作例如如果今天下雨就带伞。如果考试成绩大于或者等于60分就及格。每天坚持跑步五公里直到完成目标。程序也是一样如果程序只能从第一行一直执行到最后一行那么它几乎无法完成任何实际业务。因此Java 提供了流程控制语句让程序具备了思考和循环执行的能力。Java 中的流程控制主要包括三种顺序结构选择结构分支循环结构一、什么是流程控制流程控制Flow Control是指控制程序执行顺序的一组语法结构。Java 程序默认采用顺序执行。例如System.out.println(开始);System.out.println(学习 Java);System.out.println(结束);输出开始 学习Java结束程序会按照代码的书写顺序依次执行。但在实际开发中我们经常需要根据条件执行不同的代码或者重复执行某段代码这时就需要使用流程控制。二、选择结构2.1 if语句if 是 Java 中最常用的条件判断语句。在if语句中又分为单分支、双分支、多分之。单分支if语法if(条件表达式){// 条件成立时执行}示例intage20;if(age18){System.out.println(已成年);}输出已成年如果条件不成立则不会执行 if 代码块。双分支if…else语法if(条件){// 条件成立}else{// 条件不成立}示例intscore58;if(score60){System.out.println(考试通过);}else{System.out.println(考试不通过);}输出考试不通过多分支if…else if语法if(条件1){}elseif(条件2){}elseif(条件3){}else{}示例intscore85;if(score90){System.out.println(优秀);}elseif(score80){System.out.println(良好);}elseif(score60){System.out.println(及格);}else{System.out.println(不及格);}输出良好if 判断执行流程:程序会按照顺序依次判断条件第一个条件成立后面的条件将不会继续判断。所有条件都不成立则执行 else。因此多个条件之间要注意顺序。例如if(score60){}elseif(score80){}这种写法是存在问题的。因为80 已经满足 60所以后面的判断永远不会执行。正确的写法if(score90){}elseif(score80){}elseif(score60){}注意如果在if语句后面加上分号后这就会导致分号成为了if语句的语句体此时执行{ }中的代码是没有任何条件的。例如intx20;if(x20);// 因为这个结尾加了分号// 此处多写了一个分号, 导致分号成为了 if 语句的语句体, 而 { } 中的代码已经成为了和一个 if 无关的代码块所以就会按照代码执行的顺序往下执行{System.out.println(x 20);}2.2 switch语句当需要针对一个变量的多个固定值进行判断时使用 switch 更加简洁。语法switch(表达式){case值1:代码;break;case值2:代码;break;default:默认代码;}示例intday3;switch(day){case1:System.out.println(星期一);break;case2:System.out.println(星期二);break;case3:System.out.println(星期三);break;default:System.out.println(未知);}输出星期三break 的作用很多初学者容易忘记break。例如intnum1;switch(num){case1:System.out.println(A);case2:System.out.println(B);case3:System.out.println(C);}输出ABC原本只是想输出A但是为什么会输出ABC问题就出现在没有break,程序会发生穿透。正确的写法case1:System.out.println(A);break;注意在switch中,它并不支持任何类型的参数Java 不同版本支持的数据类型也有所不同。常见支持的有byteshortcharintStringJava7enum枚举不支持的有doublefloatbooleanlong三、循环结构循环就是重复执行代码。Java 提供三种循环forwhiledo…while3.1 for循环这是最常用的循环。语法for(初始化;条件;更新){}例如for(inti1;i5;i){System.out.println(i);}输出12345for执行流程执行顺序初始化 ↓ 判断条件 ↓ 执行循环体 ↓ 更新变量 ↓ 继续判断一直到条件不满足才会调整循环例子求 1 ~ 100的和intsum0;for(inti1;i100;i){sumi;}System.out.println(sum);// 输出5050输出九九乘法表for(inti1;i9;i){for(intj1;ji;j){System.out.print(j*i(i*j)\t);}System.out.println();}输出1*111*222*24...3.2 while循环这个循环比较适用于循环次数未知的情况。语法while(条件){}示例inti1;while(i5){System.out.println(i);i;}输出12345while 与 for 的区别forfor(inti1;i100;i)适合已知循环次数。例如输出 100 次遍历数组遍历集合whilewhile(passwordWrong){}适合不知道循环多少次。例如登录验证文件读取Socket 通信用户输入3.3 do…while循环这个循环的特点就是先执行一次再判断条件。语法do{}while(条件);示例inti1;do{System.out.println(i);i;}while(i5);输出12345即使条件不成立inti10;do{System.out.println(i);}while(i5);也会输出10因为这个循环是先执行循环语句, 再判定循环条件循环条件成立则继续执行否则循环结束。3.4 break 与 continuebreak的作用在于立即结束循环。示例for(inti1;i10;i){if(i5){break;}System.out.println(i);}输出1234执行到 break 就会让循环结束.continue的作用在于结束本次循环继续下一次循环。示例for(inti1;i5;i){if(i3){continue;}System.out.println(i);}输出1245执行到 continue 语句的时候, 就会立刻进入下次循环(判定循环条件), 从而不会执行到下方的打印语句3.5 循环嵌套循环里面还可以继续写循环。例如for(inti1;i3;i){for(intj1;j2;j){System.out.println(i-j);}}输出1-11-22-12-23-13-2常用于打印图形遍历二维数组数据组合矩阵运算3.6 死循环所谓死循环就是循环条件始终成立程序无法正常结束。例如while(true){System.out.println(Hello Java);}或者for(;;){System.out.println(Hello Java);}死循环并不一定是错误在服务器程序、消息监听、网络通信等场景中会经常使用但通常需要结合 break 或其他退出条件。四、经典案例案例一判断闰年intyear2026;if((year%40year%100!0)||year%4000){System.out.println(year 是闰年);}else{System.out.println(year 是平年);}案例二输出 1~100 之间所有偶数for(inti1;i100;i){if(i%20){System.out.println(i);}}案例三猜数字RandomrandomnewRandom();ScannerscannernewScanner(System.in);inttoGuessrandom.nextInt(100);while(true){System.out.println(请输入数字:(1-100));intnumscanner.nextInt();if(numtoGuess){System.out.println(大了);}elseif(numtoGuess){System.out.println(小了);}else{System.out.println(猜对了);break;}}scanner.close();