本专题主要为观看韩顺平老师《零基础30天学会Java》课程笔记,同时也会阅读其他书籍、学习其他视频课程进行学习笔记总结。如有雷同,不是巧合!
程序运行的流程控制决定程序如何执行,主要有三大流程控制语句:
顺序控制:程序从上到下逐行执行,中间没有任何判断和跳转
分支控制(if else switch):让程序有选择的执行
if-else:
单分支/双分支/多分支/嵌套分支if(条件表达式1) { 执行代码块1; } else if (条件表达式2) { 执行代码块2; } ...... else { // else必须紧跟在if或另一个else if之后 执行代码块n; }
switch:
switch(表达式) { // 只要是表达式就有值 case 常量1: // 表达式的值等于常量 语句块1; break; // 结束switch分支 ...... default: 语句块; break; }
⬆️①只要两种类型能相互转换就可以,不需要常量比输入表达式类型更高位;
②注意表达式为float/double等类型都不可以;
⑤”fall-through”:如果某个case没有break,则会进入下一个case并直接执行其语句块,直到遇到break(即不会判断是否满足下一个case)【允许在一个
switch
语句中实现多个case
共享相同的处理代码,可以在case
中不写任何语句块】
循环控制(for, while, do while, 多重循环)
for
:for (循环变量初始化; 循环条件; 循环变量迭代) { 循环操作语句; } // 循环初始值可以有多条初始化语句,但是类型需要相同,用逗号隔开;循环变量迭代也可以有多条语句 // 循环变量初始化可以在for语句之外,循环变量迭代也可以放在循环操作语句中 // 但是循环条件两边的分号不能省略:for (; 循环条件;) for (;;) {...} // 表示无限循环
while
:循环变量初始化; while (循环条件) { 循环体; 循环变量迭代; }
do-while
:循环变量初始化; do { // 先执行,后判断,即至少执行一次 循环体; 循环变量迭代; } while (循环条件);
多重循环:将一个循环放在另一个循环中,就形成了嵌套循环(内层循环作为外层循环的嵌套体)
⭐例:按金字塔形状输出星星
import java.util.Scanner; public class Stars { public static void main (String[] args) { Scanner scanner = new Scanner(System.in); int level; System.out.print("输入层数:"); level = scanner.nextInt(); int max = 2 * level - 1; int i = 1; while (i <= level) { int star_count = 2 * i - 1; for (int j = 1; j <= (max - star_count) / 2; j++) { System.out.print(" "); } for (int k = 1; k <= star_count; k++) { System.out.print("*"); } for (int j = 1; j <= (max - star_count) / 2; j++) { System.out.print(" "); } System.out.print("\n"); i++; } } }
import java.util.Scanner; public class Stars { public static void main (String[] args) { Scanner scanner = new Scanner(System.in); int level; System.out.print("输入层数:"); level = scanner.nextInt(); int max = 2 * level - 1; int i = 1; while (i <= level) { int star_count = 2 * i - 1; for (int j = 1; j <= (max - star_count) / 2; j++) { System.out.print(" "); } for (int k = 1; k <= star_count; k++) { if (i != 1 && i != level) { if (k !=1 && k!= star_count) { System.out.print(" "); } else { System.out.print("*"); } } else { System.out.print("*"); } } for (int j = 1; j <= (max - star_count) / 2; j++) { System.out.print(" "); } System.out.print("\n"); i++; } } }
⭐例:输出空心菱形
import java.util.Scanner; public class Rhombus { public static void main (String[] args) { Scanner scanner = new Scanner(System.in); System.out.print("请输入菱形的层数:"); int level = scanner.nextInt(); if (level % 2 == 0) System.out.println("层数有误!"); else { int half = (level - 1) / 2 + 1; int max = half * 2 - 1; // 上半部分三角 for (int i = 1; i <= half; i++) { for (int j = 1; j <= (max - (2 * i - 1)) / 2; j++) { System.out.print(" "); } for (int j = 1; j <= 2 * i - 1; j++) { if (j == 1 || j == 2 * i - 1) System.out.print("*"); else System.out.print(" "); } for (int j = 1; j <= (max - (2 * i - 1)) / 2; j++) { System.out.print(" "); } System.out.print("\n"); } // 下半部分三角 for (int i = half - 1; i >= 1; i--) { for (int j = 1; j <= (max - (2 * i - 1)) / 2; j++) { System.out.print(" "); } for (int j = 1; j <= 2 * i - 1; j++) { if (j == 1 || j == 2 * i - 1) System.out.print("*"); else System.out.print(" "); } for (int j = 1; j <= (max - (2 * i - 1)) / 2; j++) { System.out.print(" "); } System.out.print("\n"); } } } }
跳转控制—
break
:当某个条件满足时终止循环。当出现在多层嵌套的语句块中,可以通过标签(由程序员命名)指明要终止的是哪层语句块,实际开发中最好不要使用。label1: for (...) { label2: for (...) { if (...) { break label1; } } }
⭐比较两个字符串是否值相等:
if (”Cherry”.equals(name)) {…}
,可以避免空指针问题跳转控制—
continue
:结束本次循环,继续执行下一次循环;在多层嵌套中也可以通过标签指明跳过的循环。跳转控制—
return
:跳出所在方法,如果在main
方法中,则会退出程序。