Java学习笔记7 —— 语句和流控制

语句和流控制

表达式(Expression)
    表达式由:变量、操作符、方法调用组成。

语句(Statement)
    语句和自然语言中的基本句子相同。语句是完整的可执行单元,语句用分号(;)做为结尾。
以下表达式加上分号结尾可以成为语句
1. 赋值表达式;
2. 任何++,或者--表达式;
3. 方法引用;
4. 对象创建表达式。

块(Block)
    块是由大括号包围的0条或者多条语句组成,可以在任何地方使用,一条语句也可以使用块。

流控制语句
    语句在源文件中执行的基本顺序是从上到下,根据语句的位置顺序执行。
    流控制语句可以根据条件判断选,择执行不同的语句块。
    Java语言中的流控制语句包括:判断语句(decision-making statements)、循环语句(looping statements)、分支语句(branching
statements)。

判断语句(decision-making statments)
if-then

if (condition) {
   // statements
}

如果condition代表的表达式返回true,那么就执行后面语句块中的语句。
如果if-then语句后面没有大括号,那么只能有一个语句被执行。

if-then-else
if (condition) {
    // statements1
} else {
    // statements2
}
如果condition代表的表达式返回ture,则只执行statements1语句块,如果condition代表的表达式返回false,那么只执行
statements2语句块。

if-then-else语句可以执行连续条件判断
if (condition1) {
    // statements1
} else if (condition2) {
    // statements2
} else if (condition3) {
    // statements3
} else if (conditonN) {
    // statementsN
} else {
    // statements
}
只执行第一次condition返回true后的语句块,如果没有任何condition返回true,则执行最后的else语句块。

switch
switch语句可以完成多重条件判断,类似于if-then-else的叠加,一般情况下,3个及以上条件判断的,建议使用switch语句。
switch(expression) {
    case expr1:
        statments1;
    case expr2:
        statements2;
    case expr3:
        // statements3
    case exprN:
        // statementsN
    default:
        // statements
}
当expression的值与case语句后的expr相等时,执行对应case语句后的语句块,在没有分支控制语句的情况下,继续与后面的case语
句表达式判断。
case语句和expression判断的顺序是从上到下,如果没有任何case语句判断通过,那么执行default语句后的语句块。
case语句后的表达式为数值类型(Java系统原生类型,都可以转换成int类型), 从JavaSE7以后,case语句可以接受字符串

循环语句(looping statements)
while

while(condition) {
    // statements
    // condition adjustment statements
}
先执行判断条件condition,表达式返回true,则执行while语句后面的循环代码块。代码块执行完后再次执行条件判断表达式,直到
条件表达式返回false,循环停止,跳过while语句的代码块,执行后续语句。
注意:因为while语句条件表达式固定,所以在循环体内需要对影响条件判断的因素进行修改,否则可能导致循环无法退出;while语
句的循环体如果不是代码块,可以只包含一条语句,格式需要缩进。

do-while
do {
    // statements
} while(condition)
首先执行一次循环体内的语句,然后再对condition表达式进行判断,如果为true,则在执行一次循环体,直到条件表达式返回false。
注意:由于条件表达式不包含条件更改,所以在循环体内需要对影响条件判断的因素进行更改,否则可能导致死循环;do-while语句
会在判断条件前执行一次循环体,与while语句先判断条件再执行有区别。

for
for(initialization; termination; increment) {
    // statements
}
例如:
for(int i = 0; i < 10; i++) {
    System.out.print(String.valueOf(i) + " ");
}
for循环语句在同一行中包括了循环条件初始化、循环结束判断、循环条件变更子句,所以循环体中可以不包含循环条件的调整。
for循环执行时,先执行条件初始化语句,然后执行循环判断语句,当循环判断子句返回true时,接下来执行循环体中的语句,在循环
体语句执行完后,执行for语句子句中的循环条件变更语句,然后再次执行循环条件判断。
注意:for语句中的子句内容可以省略,但是表示子句的分号不能省略。如果省略所有子句,可以造成无限循环。
for(;;){}

分支语句(Branching Statements)
break

break语句有2中形式:
1. 无标识形式;
    无标识形式的break语句在被执行时可以终止任何循环,同时也可以终止switch语句的判断。从而让程序执被终止的循环和判断语
句后的内容。
    无标识的break语句直接在关键字break后加上分号(;)使用。
例如:
for(int i = 0; i < 10; i++) {
    System.out.print(i);
    break;
}
switch(i) {
    case 1:
        System.out.println("Option code: " + i);
        break;
    case 2:
        System.out.println("Option code: " + i);
    default:
        System.out.println("No this option code: " + i);
        break;
}

2. 带标识形式。
    在break语句后,加上程序中的标识,则跳出标识所指示的循环。
例如:跳出嵌套循环
search:
for(int i = 0; i < 10; i++) {
    for(int j = 0; j < 10; j++) {
        System.out.println(i+j);
        break search;
    }
    System.out.println("This is the outer loop.")
}
上例中, search为标识,语句break search;被执行时,程序跳出两个循环。如果只用break,则外层循环不会被跳出。

continue
continue语句也可以跳出循环,但是和break语句不同的是,continue语句只是忽略continue语句后的内容,结束本次循环,并继续
从循环判断子句执行。continue语句并不会结束整个循环体。
continue语句也包含2中形式,原理与break语句类似:
1. 不带标识的形式;
2. 带标识的形式。

return
return语句结束当前执行的方法,流控制让程序回到调用该方法的地方,执行调用该方法后面的语句。
1. 直接使用return语句;
    直接使用return语句,需要在return后加上分号(;),程序跳出当前方法,方法并不返回任何值。
2. return语句后带有表达式。
    return语句后加上表达式,然后再加上分号(;)。先执行return语句后的表达式,然后跳出当前方法,表达式的执行结果作为方法的
返回值。
return expression;
例如:
return ++count;
return true;
return i;
注意:如果方法定义中包含返回值类型,方法体中必须包含带表达式的return语句。

Ref: http://docs.oracle.com/javase/tutorial/java/nutsandbolts/branch.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值