黑马程序员-JavaSE核心知识-09程序结构
3.9、程序结构(重点)
程序结构在语言之中一共分为三种:顺序结构、选择结构、循环结构。
3.9.1 、顺序结构
所有的代码按照先后的顺序依次进行执行,例如,如下代码:
public class Hello { public static void main(String args[]) { int x = 2 ; x = x + 2 ; System.out.println(x) ; } } |
3.9.2 、分支结构(选择结构)
就相当于提供了一些条件判断,根据判断的结果来选择执行何种操作,对于分支结构主要操作语法:if、if..else、if..else if…else,这三种结构的完整语法如下:
if语法: |
if…else语法: |
if…else if…else语法: |
if (布尔表达式) { 条件满足时执行的程序 ; } |
if (布尔表达式) { 条件满足时执行的程序 ; } else { 条件不满足时执行的程序 ; } |
if (布尔表达式1) { 条件满足时执行的程序 ; } else if (布尔表达式2) { 条件满足时执行的程序 ; } ... else { 所有条件都不满足时执行的程序 ; } |
范例:if语句
public class Hello { public static void main(String args[]) { int age = 16 ; if (age < 18) { System.out.println("少儿不宜观看。") ; } } } |
范例:if..else语句
public class Hello { public static void main(String args[]) { int age = 26 ; if (age < 18) { System.out.println("少儿不宜观看。") ; } else { System.out.println("青年观看的教育片。") ; } } } |
范例:if…else if…else操作
public class Hello { public static void main(String args[]) { int age = 260 ; if (age <= 18) { System.out.println("您属于青少年。") ; } else if (age > 18 && age <= 50) { System.out.println("您属于青状年。") ; } else if (age > 50 && age <250) { System.out.println("您属于老年。") ; } else { System.out.println("妖怪,您不是人。") ; } } } |
但是对于多条件判断使用if..else if…else是可以判断布尔条件的,如果是多数值判断,可以通过switch完成,语法:
switch (判断值) { case 数值1: 满足此数值时执行的语句 ; [break ;] case 数值2: 满足此数值时执行的语句 ; [break ;] case 数值3: 满足此数值时执行的语句 ; [break ;] ... default: 所有条件都不满足时执行的语句 ; [break ;] } |
对于switch操作,在最早主要使用的是整型或者是字符来完成。
public class Hello { public static void main(String args[]) { int ch = 0 ; switch(ch) { case 0 : System.out.println("数值是0。") ; break ; case 1 : System.out.println("数值是1。") ; break ; case 2 : System.out.println("数值是2。") ; break ; default : System.out.println("没有条件满足。") ; break ; } } } |
但是对于switch随着版本的不同,也有所更改,JDK 1.5之后也可以利用枚举作为判断条件,而JDK 1.7之后,switch里面也可以判断字符串了(String),这个可以理解为JDK 1.7才支持的新功能。
public class Hello { public static void main(String args[]) { String str = "two" ; switch(str) { case "one" : System.out.println("壹") ; break ; case "two" : System.out.println("贰") ; break ; case "three" : System.out.println("叁") ; break ; default : System.out.println("没有") ; break ; } } } |
3.9.3 、循环结构
循环的概念主要指的是某一块代码可以被重复执行多次。而循环的操作,分为两种语法:while循环、for循环。
1、 while循环:
do…while(98%不会看见使用): |
while(布尔表达式): |
do { 循环体 ; 循环条件修改 ; } while (循环判断) ; |
while (循环判断) { 循环体 ; 循环条件修改 ; } |
通过这样的语法就可以发现,实际上do..while表示先执行后判断,而while循环表示先判断后执行,如果循环条件都不满足的情况下,do..while至少执行一次,而while一次都不会执行。
通过以上给出的两个格式,应该可以发现出循环结构的特点:
· 循环的结束判断;
· 每次循环体执行的时候,循环条件要求修改。
范例:使用while两种循环实现1 ~ 100的累加
do…while: |
while(布尔表达式): |
public class Hello { public static void main(String args[]) { int sum = 0 ; // 保存累加的结果 int x = 1 ; // 进行结束的判断 do { sum += x ; // 累加 x ++ ; // x自增长 } while (x <= 100) ; // 满足则继续执行 System.out.println(sum) ; } } |
public class Hello { public static void main(String args[]) { int sum = 0 ; // 保存累加的结果 int x = 1 ; // 进行结束的判断 while (x <= 100) { sum += x ; // 累加 x ++ ; // x自增长 } System.out.println(sum) ; } } |
2、 for循环:
for循环的最大特点是已经明确的知道了循环次数,for循环的语法如下:
for (循环的初始值 ; 循环的判断条件 ; 循环条件的修改) { 循环体 ; } |
范例:实现1 ~ 100的累加
推荐作法: |
不推荐作法: |
public class Hello { public static void main(String args[]) { int sum = 0 ; // 保存累加的结果 for (int x = 1 ; x <= 100 ; x ++) { sum += x ; } System.out.println(sum) ; } } |
public class Hello { public static void main(String args[]) { int sum = 0 ; // 保存累加的结果 int x = 1 ; // 初始值 for ( ; x <= 100 ; ) { sum += x ; x ++ ; // 循环条件修改 } System.out.println(sum) ; } } |
个人总结,关于循环的出现情况:
· while循环:在不确定循环次数,但是确定循环结束条件的情况下使用;
· for循环:确定循环次数的情况下使用。
对于循环而言,也可以进行循环的嵌套操作。
范例:输出一个乘法口诀表,需要两层循环
public class Hello { public static void main(String args[]) { for (int x = 1 ; x <= 9 ; x ++) { // 控制循环行 for (int y = 1; y <= x ; y ++ ) { System.out.print(x + "*" + y + "=" + x * y + "\t") ; } System.out.println() ; // 换行 } } } |
范例:打印三角型
public class Hello { public static void main(String args[]) { int line = 9 ; // 打印9行 for (int x = 0 ; x < 9 ; x ++) { // 循环次数,控制行 for (int y = 0 ; y < line - x ; y ++) { System.out.print(" ") ; } for (int y = 0 ; y <= x ; y ++) { System.out.print("* ") ; } System.out.println() ; } } } |
循环操作的基本功能就是重复执行一段代码,但是以上的循环操作,只是作为学习过程之中的程序,循环基本的逻辑结构,实际之中意义不大。