语句和流控制
表达式(Expression)
表达式由:变量、操作符、方法调用组成。
语句(Statement)
语句和自然语言中的基本句子相同。语句是完整的可执行单元,语句用分号(;)做为结尾。
以下表达式加上分号结尾可以成为语句
1. 赋值表达式;
2. 任何++,或者--表达式;
3. 方法引用;
4. 对象创建表达式。
块(Block)
块是由大括号包围的0条或者多条语句组成,可以在任何地方使用,一条语句也可以使用块。
流控制语句
语句在源文件中执行的基本顺序是从上到下,根据语句的位置顺序执行。
流控制语句可以根据条件判断选,择执行不同的语句块。
Java语言中的流控制语句包括:判断语句(decision-making statements)、循环语句(looping statements)、分支语句(branching
statements)。
判断语句(decision-making statments)
if-then
如果if-then语句后面没有大括号,那么只能有一个语句被执行。
if-then-else
statements2语句块。
if-then-else语句可以执行连续条件判断
switch
switch语句可以完成多重条件判断,类似于if-then-else的叠加,一般情况下,3个及以上条件判断的,建议使用switch语句。
句表达式判断。
case语句和expression判断的顺序是从上到下,如果没有任何case语句判断通过,那么执行default语句后的语句块。
case语句后的表达式为数值类型(Java系统原生类型,都可以转换成int类型), 从JavaSE7以后,case语句可以接受字符串。
循环语句(looping statements)
while
条件表达式返回false,循环停止,跳过while语句的代码块,执行后续语句。
注意:因为while语句条件表达式固定,所以在循环体内需要对影响条件判断的因素进行修改,否则可能导致循环无法退出;while语
句的循环体如果不是代码块,可以只包含一条语句,格式需要缩进。
do-while
注意:由于条件表达式不包含条件更改,所以在循环体内需要对影响条件判断的因素进行更改,否则可能导致死循环;do-while语句
会在判断条件前执行一次循环体,与while语句先判断条件再执行有区别。
for
for循环执行时,先执行条件初始化语句,然后执行循环判断语句,当循环判断子句返回true时,接下来执行循环体中的语句,在循环
体语句执行完后,执行for语句子句中的循环条件变更语句,然后再次执行循环条件判断。
注意:for语句中的子句内容可以省略,但是表示子句的分号不能省略。如果省略所有子句,可以造成无限循环。
分支语句(Branching Statements)
break
break语句有2中形式:
1. 无标识形式;
无标识形式的break语句在被执行时可以终止任何循环,同时也可以终止switch语句的判断。从而让程序执被终止的循环和判断语
句后的内容。
无标识的break语句直接在关键字break后加上分号(;)使用。
例如:
2. 带标识形式。
在break语句后,加上程序中的标识,则跳出标识所指示的循环。
例如:跳出嵌套循环
continue
continue语句也可以跳出循环,但是和break语句不同的是,continue语句只是忽略continue语句后的内容,结束本次循环,并继续
从循环判断子句执行。continue语句并不会结束整个循环体。
continue语句也包含2中形式,原理与break语句类似:
1. 不带标识的形式;
2. 带标识的形式。
return
return语句结束当前执行的方法,流控制让程序回到调用该方法的地方,执行调用该方法后面的语句。
1. 直接使用return语句;
直接使用return语句,需要在return后加上分号(;),程序跳出当前方法,方法并不返回任何值。
2. return语句后带有表达式。
return语句后加上表达式,然后再加上分号(;)。先执行return语句后的表达式,然后跳出当前方法,表达式的执行结果作为方法的
返回值。
Ref: http://docs.oracle.com/javase/tutorial/java/nutsandbolts/branch.html
表达式(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