• Java 程序流程语句


    顺序结构

    什么是顺序结构:一行一行的执行代码

    选择结构 if

    什么是选择结构:通过判断条件来做选择的语句,我们称为选择语句或分支语句

    定义方式:if语句使用boolean表达式或boolean值作为选择条件,有三种结构形式:

    选择结构 if

    第一种结构:

    if (boolean条件) {
          代码/当boolean条件结果为true的时候,就执行这里的代码。
    }
    

    注意:
    (1)不能写出 if (boolean条件) ; { }
    (2)若 if 的语句只有一句话,其实可以省略{},即是如此,最好得写 {}.
    (3)对于boolean类型的表达式,不要使用 boolean表达式==true的写法。

    选择结构 if-else

    第二种结构.

    if (boolean条件) {
          当boolean条件结果为true的时候,就执行这里的代码.
    }
    else {
          当boolean条件结果为false的时候,就执行这里的代码.
    }
    

    if-else结构和三元运算符的区别:

    (1)一个是结构,一个运算表达式。
    (2)运算表达式的是必须得有一个结果的。

    选择结构 if-elseif-else

    第三种结构:

    if (boolean条件1) {
          当条件1为true的时候,执行这里.
    }
    else if (boolean条件2) {
          当条件2为true的时候,执行这里
    }
    else if (boolean条件3) {
          当条件3为true的时候,执行这里
    }
    else  {
          上述所有条件,都不满足,就执行这里.
    }
    

    如果已经满足条件了,后面的判断就不会执行。

    选择结构switch

    定义:switch的语法结构(和if-elseif-else的语义相同)

    switch (整型表达式) {
        case A值:
             语句1;
        	 break;
        case B值:
             语句2;
             break;
        case C值:
             语句3;
             break;
        default:
            上述所有的结果值都不满足
            语句.
    }
    

    注意点

    switch的语法分析以及注意:

    (1)switch中的表达式的结果/类型,必须是整数类型。

    • 整数类型:byte、short、char、int。没有long。
    • 从Java7开始,switch也支持String类型。语法糖,语法糖的背后,其有用的对待 string 类型时候,用的是hashCode() 方法转换的。
    public static void main(String[] args) {
    	String str = "fans";
    	switch (str) {
    		case "fans":
    			System.out.println("fans");
    			break;
    		case "leiwen":
    			System.out.println("leiwen");
    			break;
    		default:
    			System.out.println("default");
    			break;
    	}
    }
    

    反编译后:

    public static void main(String args[]) {
    		label0: {
    			String str = "fans";
    			String s;
    			switch ((s = str).hashCode()) {
    			default:
    				break;
    
    			case -1106497712:
    				if (!s.equals("leiwen"))
    					break;
    				System.out.println("leiwen");
    				break label0;
    
    			case 3135424:
    				if (s.equals("fans")) {
    					System.out.println("fans");
    					break label0;
    				}
    				break;
    			}
    			System.out.println("default");
    		}
    	}
    

    (2)switch语句,一旦找到入口,就会进入,并执行功能语句,后面的case不再判断,除非语句break,return 或者执行完成,才会停下来。

    (3)多个case 的不能相同。

    (4)如果语句有多条语句,要用 { }。break 写在 { } 外面。

    int week = 1;
    switch (week) {
    case 1: {
    	System.out.println("星期1");
    	System.out.println("工作日");
    }
    	break;
    default:
    	System.out.println("其它");
    	break;
    }
    

    (5)如果没有写break,就会执行当前条件后面的所有语句,直到遇到break 退出。

    (6)default表示,当case中的值都不成立的时候,才执行,可以放在前面,但是要加上break,如果没有加,同样会继续往下执行。如果放在最后,可以省略break,所以一般的放在最后。

    循环结构

    循环 while

    语法:

    while (boolean表达式) {
         若boolean表达式结果为true,则执行这里循环体
    }
    

    注意:先判断boolean表达式。在执行循环体。

    循环 do-while

    语法:

    do {
       循环体
    } while (boolean表达式);
    

    注意:

    • do while,不管boolean表达式对与错,先执行一次循环体。
    • 即使boolean表达式为false,do while也会执行一次。
    • 推论:无论条件如何,dowhile至少会执行一次。

    循环 for

    语法:

    for (初始化语句; boolean表达式; 循环之后的操作语句) {
       循环体
    }
    

    初始化语句:定义变量,赋初始值,只会执行一次;
    boolean表达式:判断条件,若条件为true,则进入循环体,若为false,则跳过循环。
    循环之后的操作语句:变量的自增/自减操作.

    执行顺序

    (1)初始化语句.
    (2)boolean表达式:

    • true:GOTO 3
    • false:跳过循环,不执行循环体。

    (3)执行循环体.
    (4)循环之后的操作语句, GOTO 2.

    嵌套循环

    什么时候要使用嵌套循环?

    循环:当一个操作需要重复N次。
    嵌套循环:当一个重复的操作,需要执行N次。

    结构

    一个循环当中嵌套一个循环

    注意事项

    (1)使用循环嵌套时,内层循环和外层循环的循环控制变量不能相同。
    (2)循环嵌套结构的书写,最好采用“右缩进”格式,以体现循环层次的关系。
    (3)尽量避免太多和太深的循环嵌套结构。

    控制循环结构语句

    break语句

    结束当前所在的循环。
    注意:break之后的语句,执行不到。若编写了,则语法报错。

    continue语句

    表示跳过的这一次当前循环,继而进行下一次循环。
    注意:contine之后的语句,执行不到。若编写了,则语法报错。

    return语句

    表示结束循环所在的方法,方法都结束了,循环结构自然也就结束了。

    控制外层循环

    此时就得使用标签了,标签就是给某个循环起的别名,不过该别名得满足标识符的规范。
    若要控制外层循环,就在break或continue后面跟上循环的别名就OK了

    public static void main(String[] args) {
    	outter : for (int i = 0; i < 5; i++) {
    		inner : for (int j = 0; j < i; j++) {
    			if (i==3) {
    				break outter;
    			}
    		}
    	}
    }
    
  • 相关阅读:
    h5之js生成二维码
    h5手势密码开发(使用jq)
    html可用于跨域的三个标签
    原生js实现ajax
    js中parentNode,parentElement,childNodes,children
    js字符串操作之substr与substring
    pyhton之os.path
    [bzoj1510][POI2006]Kra-The Disks_暴力
    [bzoj4994][Usaco2017 Feb]Why Did the Cow Cross the Road III_树状数组
    [bzoj2506]calc_分块处理
  • 原文地址:https://www.cnblogs.com/xzh0717/p/10891755.html
Copyright © 2020-2023  润新知