语句的分类
Java语句按是否改变运行的状态可分为执行语句(如表达式语句)和非执行语句(如声明语句)。任何语句的末尾都以“”结束。
执行语句按其组成可分三类
空语句
只有一个语句结束符“” 无任何内容。
基本语句单语句
独立的、完整的不能再分割为更小的可执行单元。
复合语句块语句
包含在{ }内的一条或若干条语句。
Java的基本语句的结构可分为4类
1顺序结构语句 2分支语句 3循环语句 4例外处理语句
后三种语句又称为流控制语句我们将主要介绍分支语句和循环语句而例外处理语句包括try、catch、finally以及throw语句。
这些语句是Java所特有的。我们将在后面作专门的介绍。
分支语句
分支语句包括if-else, break, switch, return等语句。分支语句提供了一种控制机制使得程序可以跳过一些语句转去执行特定的语句。
条件语句 if-else.
if-else语句根据判定条件的真假来执行两种操作中的一种,其格式为:
if (boolean-expression)
statement1;
else
statement2;
其中要注意的有
布尔表达式boolean-expression是任意一个返回布尔型数据的表达式(这比C、C++的限制要严格)。
每个单一的语句后都必须有分号。
语句statement1, statement2可以是复合语句这时要用花括号{}。{}外面不加分号。
else子句是任选的。
若布尔表达式的值为true则程序执行statement1否则执行statement2。
if-else语句的一种特殊形式为:
if (expression1){
statement1
} else if (expression2){
statement2
}……
}else if (expressionN){
statementN
}
else子句不能单独作为语句使用它必须和if配对使用。else总是与离它最近的if配对。可以通过使用花括号{}来改变配对关系。
例3.1: 比较两个数的大小,并按从小到大的次序输出。
public class CompareTwo{ public static void main (String args[]){ double d1=23.4; double d2=35.1; if (d2=d1) System.out.println(d2+"="+d1); else System.out.println(d1+"="+d2); } }
例3.2判断某一年是否为闰年。
闰年的条件是符合下面二者之一: ①能被4整除,但不能被100整除; ②能被400整除。
public class LeapYear{ public static void main (String args[]){ int year=1989; //method1 if ((year%4==0 && year0!=0) || (year@0==0)) System.out.println(year+"is a leap year."); else System.out.println(year+"is not a leap year."); year=2000; //method2 boolean leap; if (year%4 != 0) leap=false; else if (year0 != 0) leap=true; else if (year@0 != 0) leap=false; else leap=true; if(leap==true) System.out.println(year+" is a leap year."); else System.out.println(year+"is not a leap year."); } }
该例中方法1用一个逻辑表达式包含了所有的闰年条件方法2使用了if-else语句的特殊形式。
多分支语句switch
switch语句是一种多分支选择语句它可根据switch中表达式的值来执行多个操作中的一个它的一般格式如下
switch (expression){
case value1: statement1;
break;
case value2: statement2;
break;
…………
case valueN: statemendN;
break;
[default: defaultStatement;]
}
表达式expression可以返回任一简单类型的值(如整型、字符型)多分支语句把表达式返回的值与每个case子句中的值一个常量相比。
如果匹配成功则执行该case子句后的语句序列。
default子句是任选的。当表达式的值与任一case子句中的值都不匹配时程序执行default后面的语句。如果表达式的值与任一case子句
中的值都不匹配且没有default子句则程序不做任何操作直接跳出switch语句。
break语句用来在执行完一个case分支后使程序跳出switch语句即终止switch语句的执行。
switch语句的功能可以用if-else来实现但在某些情况下使用switch语句更简炼且程序的执行效率提高。
例3.3 根据考试成绩的等级打印出百分制分数段。
public class GradeLevel { public static void main(String args[]){ System.out.println("\nOutPut is:"); char grade='C'; //normal use switch (grade){ case 'A': System.out.println(grade+"is 85100"); break; case 'B': System.out.println(grade+"is 7084"); break; case 'C': System.out.println(grade+"is 6069"); break; case 'D': System.out.println(grade+"is 60"); break; default: System.out.println("inputerror"); } } }
break语句
在switch语中break语句用来终止switch语句的执行。使程序在switch语句后的第一个语句开始执行。
在Java中可以为每个代码块加一个括号。一个代码块通常是用花括号{}括起来的一段代码。加标号的格式如下:
BlockLabel: {codeBlock}
break语句的第二种使用情况就是跳出它所指定的块并从紧跟该块的第一条语句处执行。其格式为: break BlockLabel;
例如:
a: {…… //标记代码块a
b: {…… //标记代码块b
c: {…… //标记代码块c
break a;
……//will not be executed
}
……//will not be executed
}
……//will not be executed
}
…… //execute from here
与C、C++不同, Java中没有goto语句来实现任意的跳转, 因为goto语句破坏程序的可读性, 而且影响编译的优化。Java用break来实现goto语句所特有的一些功能。
返回语句return
return语句用于从当前执行的方法中退出, 并返回到调用该方法的语句处继续程序的执行。返回语句有两种格式:
return expression
返回一个值给调用该方法的语句, 返回值的数据类型必须与方法声明中的返回值类型一致。可以使用强制类型转换来使类型一致。
return
当方法说明中用void声明返回类型为空时, 可以使用这种格式, 它不返回任何值。不带参数的return语句有时可省略。
return语句通常用在一个方法体的最后。
循环语句
循环语句包括 while, do-while, for, continue 等语句。循环语句的作用是反复执行一段代码直到满足循环终止条件为止
一个循环一般应包括四部分内容
初始化部分(initialization): 用来设置循环的一些初始条件计数器清零等。
循环体部分(body): 这是反复循环的一段代码可以是单一的一条语句也可以是复合语句。
迭代部分(iteration): 这是在当前循环结束下一次循环开始前执行的语句常常用来使计数器加1或减1。
终止部分(termination): 通常是一个布尔表达式每一次循环要对该表达式求值以验证是否满足循环终止条件。
下面分别介绍Java中的while语句do-while语句和for语句。
while语句
while语句的一般格式为
[初始化]
while (条件表达式E){
语句S; //循环体
}
当条件表达式E的值为true时循环执行花括号中的语句S。S中包括迭代部分。
while语句首先计算条件表达式E是否成立当条件成立(true)时才去执行循环中的语句。所以有可能循环体一次也不执行。
do-while语句
do-while语句的一般格式为:
[初始化]
do {
语句S; //循环体
} while (条件表达式E);
do-while语句首先执行循环体, 然后再计算终止条件, 若结果为true, 则循环执行语句S, 直到条件表达式E的结果为false。
与while语句不同的是, do-while语句的循环体至少执行一次。
for语句
for语句的一般格式为:
for (初始表达式; 条件表达式; 迭代表达式) {
语句S; //循环体
}
for语句执行时首先执行初始化操作然后判断终止条件是否满足如果满足则执行循环体中的语句最后执行迭代部分。
完成一次循环后重新判断终止条件。
可以在for语句的初始化部分声明变量它的作用域为整个for语句。
for语句通常用来执行循环次数确定的情况(如对数组元素进行操作)。
在初始化部分和迭代部分可以使用逗号语句来分隔多个操作。例如:
for (i=0,j=10; ij; i++,j--) {
……
}
continue语句
continue语句用来结束本次循环, 跳过循环体中下面尚未执行的语句, 接着进行终止条件的判断, 以决定是否继续循环。
也可以用continue跳转到括号指明的外层循环中,这时的格式为
continue outerLable;
例3.4下例分别用while、do-while和for语句实现累计求和。
public class Sum{ public static void main(String args[]){ System.out.println("\n**while statement**"); int n=10,sum=0; ∥initialization while (n0){ ∥termination sum+=n; ∥body n--; ∥iteration } System.out.println("sum is"+sum); System.out.println("\n**do_while statement**"); n=0; ∥initialization sum=0; do{ sum+=n; ∥body n++; ∥iteration } while(n=10); ∥termination System.out.println("sum is"+sum); System.out.println("\n**for statement**"); sum=0; for (int i=1;i=10;i++){ sum+=i; } System.out.println("sum is"+sum); } }
可以从中来比较这三种循环语句,从而在不同的场合选择合适的语句。
转载于:https://blog.51cto.com/dccgl/1307703