- 论坛徽章:
- 0
|
Java中语句有空语句,表达式语句,块语句,标号语句,选择语句,循环语句,跳转语句,同步语句,例外语句。
1)空语句:在操作系统中比较常用。这里举个不太恰当的例子
class NoBody {
public static void main(String [ ] args){
int i=1,j=5;
while(++i<--j) ;
Systems.out.println(i);
}
}
功能:输出i和j的中间数。
2)表达式语句:x = x+1,++x,x++,--x,x--,objRef.method(),new MyClass(),这与c中的比较类似,不再赘述。
3)选择语句:
if-else : if(condition){
statement;
}else{
statement;
}
这里直接出现在if语句后的else只能有一个,if后的条件condition必须是boolean型的。
嵌套式的if-else if: if(condition1){
Statement;
}
else if(condition2){
Statement2;
}
else if(condition3){
statement3;
}
else {
Statement4;
}
这种阶梯形的可以和switch()语句实现相同的功能,switch()语句结构更清楚。这种结构执行时只要有一个控制if的条件为真,就执行他后边的statement,然后跳过该阶梯形的其余部分。如果没有一个条件为真,将执行最后一个else中的statement。如果没有else并且所有条件都为假,则不发生任何动作。
Switch()语句:
switch(expression){
case value1: statement1
break;
case value2: statement2 ;
break;
case value3: statement3;
break;
case value4: statement14;
break;
default : statement; //该项是可选的
break;
}
switch()语句的基本用法和c基本一致,需要注意的是switch(expression)中的expression只能是int,char,short,byte。当expression为char时case后的value需要加上单引号,表示他是一个字符。Case语句后的break也是可以省略的如:
case 0:
case 1:
case 3: statement;
break;
switch()和if-else语句的不同在于switch仅能测试相等的情况,而if可以测试任何布尔表达式。同一个switch中不能有相同的两个value。
Java编译器在编译switch语句时,将检查每个case常量,并创建一个"跳转表",该表用于在表达式的基础上选择执行路径。因此在多值选择时switch将比if-else运行效率更高。
4)循环语句
for(),while(),do-while()基本用法与c相同。需要注意的是while(1){}这条语句在c中是合法的,但在java中是不允许的。Java中while(condition)的condition只能是boolean型的值或表达式。
Java从j2SE5开始定义了地二中for形式,即"for-each"风格循环。基本形式为
for(type itr-var : collection) statementblock
其中type定义了类型,itr-var指定了迭代变量(iteration
variable)名,该变量将收集集合中的元素,方式是从集合的开始到结束一次一个。所要循环的集合由collection 指定。
例如:public ForEach{
public static void main(String [] args){
int nums[] = {1,2,3,4,5,6,7,8,9};
int sum1 = 0 , sum2 = 0;
for(int i = 0; i<9; i++){
sum1 += nums;
}
for(int x : nums){
sum2 += x;
//if(x==5) break;
}
System.out.println("sum1="+sum1);
System.out.println("sum2="+sum2);
}
}
结果:sum1=45
sum2=45
可以看出每次循环时,系统会给x自动赋予一个与nums中下一个元素相等的值。因此在首次迭代时x包含1,第二次是包含2.等等。虽然for-each风格中的for会自动从最低下标到最高下标的顺序在数组中循环,但也可以使用break语句提前终止该循环。如上例中如果执行berak语句则输出结果为:
sum1=45
sum2=15
注意x的声明必须与nums的类型是相同或兼容的。
5)break语句
break的用法有三种1.退出switch。2.退出循环。3.跳转功能(和c的goto比较像)。
前两种用法不再赘述。仅看第二种用法如:
class Break{
public static void main(String [] args){
boolean t = true;
test :{
System.out.println("This is test block!");
}
first :{
second:{
third :{
System.out.println("berore break!");
if(t){
break second;
}
System.out.println("NO");
}
System.out.println("NO");
}
System.out.println("out from second!")
}
System.out.println("out from first!");
}
}
结果:This is test block!
before break!
out from second!
out from first!
break的这种用法不常用,但在跳出比嵌套较深的循环时非常有用。
可以看到Break带有一个标签label,当执行这种break语句控制循环转移到指定的程序块,程序会从带标签块的末尾恢复执行,带标签的程序块必须包含这个break,但不需直接包含。如果将程序中的break、second;换为break test;程序将无法通过编译,系统将会提示 : test:未定义的标签。这是因为break没有被包含在test程序块中。
本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u2/77840/showart_1361394.html |
|