热门问题:国际域名注册信息更新 邮箱设置 主机管理 ftp ICP备案问题集锦 如何使用SQL数据库
 
 
您现在的位置:首页 > 常见问题 > 软件常见问题 > JSP程序模板

JAVA 的程序流

时间:2009-05-30     来源:亿腾科技    
 

因为JSP 的useBean需要用JAVA语言来实现,然后编译成CLASS文件放入TOMCAT的BIN目录下。所以在这里我们一同学习一下JAVA的程序流:

与C、 C++相同,Java程序通过流控制来执行程序流,完成一定任务的语句组成的。语句可以是单一的一条语句(如c=a+b;),也可以复合语句。
下面我们分别来介绍Java中的流控制语句,包括
分支语句 :if-else,break,switch, return.

循环语句 :while,do-while,for, continue.

例外处理语句 :try-catch-finally,throw

最后我们简单介绍一下注释语句
分支语句

分支语句提供了一种控制机制,使得程序的执行可以跳过某些语句不执行,而转去执行特定的语句。

条件语句if-else.

if-else语句根据判定条件的真假来执行两种操作中的一种,格式为:

if(boolean-expression)
statement1;
[else statement2;]


1.布尔表达式boolean-expression是任意一个返回布尔型数据的达式(这比C、 C++的限制要严格)。

2.每个单一的语句后都必须有分号。

3.语句statement1,statement2可以为复合语句,这时要用大括号{}。建议对单一的语句也用大括号括起,这样程序的可读性强,而且有利于程序的扩充(可以在其中填加新的语句)。{}外面不加分号。

4.else子句是任选的。

5.若布尔表达式的值为true,则程序执行statement1,否则执行statement2。

6.if-else语句的一种特殊形式为:

if(expression1){
statement1
}else if (expression2){
statement2
}……
}else if (expressionM){
statementM
}else {
statementN
}
[else子句不能单独作为语句使用,它必须和if配对使用。else总是与离它最近的if配对。可以通过使用大括号{}来改变配对关系。]

7.举例:
比较两个数的大小,并按从小到大的次序输出。

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);
}
}
运行结果为:
C:\>java CompareTwo

35.1 >= 23.4 


例.判断某一年是否为闰年。

闰年的条件是符合下面二者之一:①能被4整除,但不能被100整除;②能被4整除,又能被100整除。

public class LeapYear{
public static void main( String args[] ){
int year=1989; //method 1
if( (year%4==0 && year%100!=0) || (year%400==0) )
System.out.println(year+" is a leap year.");
else
System.out.println(year+" is not a leap year.");
year=2000; //method 2
boolean leap;
if( year%4!=0 )
leap=false;
else if( year%100!=0 )
leap=true;
else if( year%400!=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.");
year=2050; //method3
if( year%4==0){
if( year%100==0 ){
if( year%400==0)
leap=true;
else
leap=false;
}else
leap=false;
}else
leap=false;
if( leap==true )
System.out.println(year+" is a leap year.");
else
System.out.println(year+" is not a leap year.");
}
}  

运行结果为
C:\>java LeapYear
1989 is not a leap year.
2000 is a leap year.
2050 is not a leap year.


该例中,方法1用一个逻辑表达式包含了所有的闰年条件,方法2使用了if-else语句的特殊形式,方法3则通过使用大括号{}对if-else进行匹配来实现闰年的判断。大家可以根据程序来对比这三种方法,体会其中的联系和区别,在不同的场合选用适合的方法。

多分支语句switch

switch语句根据表达式的值来执行多个操作中的一个,它的般格式如下:

switch (expression){
casevalue1:statement1;
break;
casevalue2:statement2;
break;
…………
casevalueN:statemendN;
break;
[default:defaultStatement;]
}


1.表达式expression可以返回任一简单类型的值(如整型、实数型、字符型),多分支语句把表达式返回的值与每个case子句中的值相比。如果匹配成功,则运行该case子句后的语句序列。

2.case子句中的值values必须是常量,而且所有case子句中的值是不同的。

3.default子句是任选的。当表达式的值与任一case子句中的都不匹配时,程序执行default后面的语句。如果表达式的值与任一case子句中的值都不匹配且没有default子句,则程序不作任何操作,而是直接跳出switch语句。

4.break语句用来在执行完一个case分支后,使程序跳出switch语句,即终止switch语句的执行。因为case子句只是起到一个标号的作用,用来查找匹配的入口,从此处开始执行,对后面的case子句不再进行匹配,而是直接执行其后的语句序列,因此该在每个case分支后,要用break来终止后面的case分支语句的执行。

在一些特殊情况下,多个不同的case值要执行一组相同的操作,这时可以不用break。

5.case分支中包括多个执行语句时,可以不用大括号{}括起。

6.switch语句的功能可以用if-else来实现,但在某些情况下,使switch语句更简炼,可读性强,而且程序的执行效率提高。

7.举例:

例.根据考试成绩的等级打印出百分制分数段。

public class GradeLevel{
public static void main( String args[] ){
System.out.println("\n** first situation **");
char grade='C'; //normal use
switch( grade ){
case 'A' : System.out.println(grade+" is 85~100");
break;
case 'B' : System.out.println(grade+" is 70~84");
break;
case 'C' : System.out.println(grade+" is 60~69");
break;
case 'D' : System.out.println(grade+" is <60");
break;
default : System.out.println("input error");
}
System.out.println("\n** second situation **");
grade='A'; ∥creat error without break statement
switch( grade ){
case 'A' : System.out.println(grade+" is 85~100");
case 'B' : System.out.println(grade+" is 70~84");
case 'C' : System.out.println(grade+" is 60~69");
case 'D' : System.out.println(grade+" is <60");
default : System.out.println("input error");
}
System.out.println("\n** third situation **");
grade='B'; ∥several case with same operation
switch( grade ){
case 'A' :
case 'B' :
case 'C' : System.out.println(grade+" is >=60");
break;
case 'D' : System.out.println(grade+" is <60");
break;
default : System.out.println("input error");
}
}
}  

运行结果为
C:\>java GradeLevel
**** first situation ****
C is 60~69
**** second situation ****
A is 85~100
A is 70~84
A is 60~69
A is <60
input error
**** third situation ****
B is >=60 

从该例中我们可以看到break语句的作用。


break语句

1.在switch语中,break语句用来终止switch语句的执行。使程序switch语句后的第一个语句开始执行。

2.在Java中,可以为每个代码块加一个括号,一个代码块通常用大括号{}括起来的一段代码。加标号的格式如下:

BlockLabel:{codeBlock}

break语句的第二种使用情况就是跳出它所指定的块,并从紧挨该块的第一条语句处执行。其格式为:

break BlockLabel;
例如:
a:{……//标记代码块a
b:{……//标记代码块b
c:{……//标记代码块c
break b;
…… //willnotbeexecuted
}
…… //willnotbeexecuted
}
…… //willnotbeexecuted
}
…… /executefromhere
}


3.与C、 C++不同,Java中没有goto语句来实现任意的跳转,因为goto语句破坏程序的可读性,而且影响编译的优化。但是从上例可以看出,Java用break来实现goto语句所特有的一些优点。如果break后所指定的标号不是一个代码块的标号,而是一个语句,则这时break完全实现goto的功能。不过应该避免这种方式的使用。


返回语句return

return语句从当前方法中退出,返回到调用该方法的语句处,继续程序的执行。返回语句有两种格式:


1.return expression

返回一个值给调用该方法的语句,返回值的数据类型必须用方法声明中的返回值类型一致。可以使用强制类型转换来使类型一致。

2.return

当方法说明中用void声明返回类型为空时,应使用这种格式,不返回任何值。

return语句通常用在一个方法体的最后,以退出该方法并返一个值。Java中,单独的return语句用在一个方法体的中间时,会产生编译错误,因为这时有一些语句执行不到。但
可以通过把return语句嵌入某些语句(如if-else)来使程序在未执行完方法中的所有语句时退出,例如:

int method (int num) {
∥ return num; ∥will cause compile time error
if (num>0)
return num;
…… ∥ may or may not be executed
∥depending on the value of num


循环语句

循环语句的作用是反复执行一段代码,直到满足终止循环条件为止,一个循环一般应包括四部分内容:

1.初始化部分(initialization):用来设置循环的一些初始条件,计数器清零等。

2.循环体部分(body):这是反复循环的一段代码,可以是单一一条语句,也可以是复合语句。

3.迭代部分(iteration):这是在当前循环结束,下一次循环开始执行的语句,常常用来使计数器加1或减1。

4.终止部分(termination):通常是一个布尔表达式,每一次循环要对该表达式求值,以验证是否满足循环终止条件。

Java中提供的循环语句有:while语句,do-while语句和for语句,下分别介绍。


while语句

while语句实现"当型"循环,它的一般格式为;

[initialization]
while (termination){
body;
[iteration;]
}


1.当布尔表达式(termination)的值为true时,循环执行大括号中语句。并且初始化部分和迭代部分是任选的。

2.while语句首先计算终止条件,当条件满足时,才去执行循环当中的语句。这是"当型"循环的特点。


do-while语句

do-while语句实现"直到型"循环,它的一般格式为:
[initialization]
do{
body;
[iteration;]
}while (termination);


1.do-while语句首先执行循环体,然后计算终止条件,若结果为true,则循环执行大括号中的语句,直到布尔表达式的结果为false。

2.与while语句不同的是,do-while语句的循环体至少执行一次,这是"直到型"循环的特点。


for语句

for语句也用来实现"当型"循环,它的一般格式为:

for(initialization;termination; iteration){

body;

}

1.for语句执行时,首先执行初始化操作,然后判断终止条件否满足,如果满足,则执行循环体中的语句,最后执行迭代部分。完成一次循环后,重新判断终止条件。

2.可以在for语句的初始化部分声明一个变量,它的作用域为一个for语句。

3.for语句通常用来执行循环次数确定的情况(如对数组元素进行操作),也可以根据循环结束条件执行循环次数不确定的情况。

4.在初始化部分和迭代部分可以使用逗号语句,来进行多个操作。逗号语句是用逗号分隔的语句序列。例如:

for(i=0,j=10;i<j;i++, j--){
……
}
5.初始化、终止以及迭代部分都可以为空语句,三者均为空的时候,相当于一个无限循环。


continue语句

1.continue语句用来结束本次循环,跳过循环体中下面尚未执的语句,接着进行终止条件的判断,以决定是否继续循环。对于for语句,在进行终止条件判断前,还要先执行迭代
语句。它的格式为:

continue;

2.也可以用continue跳转到括号指明的外层循环中,这时的格为

continue outerLable;

例 如 :

outer: for( int i=0; i<10; i++ ){ ∥外层循环
for( int j=0; j<20; j++ ){ ∥内层循环
if( j>i ){
……
continue outer;
}
……
}
……
}


该例中,当满足j>i的条件时,程序执行完相应的语句后跳转到外层循环,执行外层循环的迭代语句i++;然后开始下一次循环。

举例

下例分别用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( n>0 ){ ∥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++){
    ∥initialization,termination,iteration
    sum+=i;
    }
    System.out.println("sum is "+sum);
  }
}  

运行结果为:
C:\>javaSum
**whilestatement**
sumis55
**do_whilestatement**
sumis55
**forstatement**
sumis55
可以从中来比较这三种循环语句,从而在不同的场合选择合适的语句。

例4.5求100~200间的所有素数

public class PrimeNumber{
public static void main( String args[] ){
System.out.println(" ** prime numbers between 100 and 200 **");
int n=0;
outer:for(int i=101;i<200;i+=2){ ∥outer loop
int k=15; ∥select for convinence for(int j=2;j<=k;j++){ ∥inner lop

if( i%j==0 )
continue outer;
}
System.out.print(" "+i);
n++; ∥output a new line
if( n<10 ) ∥after 10 numbers
continue;
System.out.println();
n=0;
}
System.out.println();
}
}  

运行结果为:
C:\>java PrimeNumber
** prime numbers between 100 and 200 **
101 103 107 109 113 127 131 137 139 149
151 157 163 167 173 179 181 191 193 197
199

该例通过一个嵌套的for语句来实现。

例外处理语句

例外处理语句包括try、catch、finally以及throw语句。举例说明:

String chax=(String) session.getValue("cha1");
//String yonghub=request.getParameter("yonghub");
int pageLine=8;
int totalRec=0;
int totalSub=0;
int intPage=1;
int i;

if (request.getParameter("page")!=null)
intPage=Integer.parseInt(request.getParameter("page"));
try{
ResultSet countrs=null;
countrs=workM6.executeQuery("select count(*) as cnt from wujml where wujbt like '%' + '"+chax+"' + '%' and wenjbs is null");
if (countrs.next())
totalRec=countrs.getInt("cnt");
countrs.close();
//stmt.close();
}
catch (Exception e){
e.printStackTrace();
} 


注释语

Java中可以采用三种注释方式:

1∥ 用于单行注释。注释从∥开始,终止于行尾。
2/*…*/用于多行注释。注释从/*开始,到*/结束,且这种注释不能互相嵌套。
3/**…*/是Java所特有的doc注释。它以/**开始,到*/结束。这种注释主要是为支持JDK工具javadoc而采用的。javadoc能识别注释中用标记@标识的一些特殊变量,并把doc注释加入它所生成的HTML文件。
 

恰逢ICANN国际大会,.top域名知
亿腾科技2015抗战胜利日放假通知
35000自然双拼top保留域名开放抢
亿腾科技2015端午节放假通知
亿腾科技2015劳动节放假通知
【转】关于新网的.cn/中国/公司/
抢注top域名,优惠多多更有好礼相
 
 全国免费服务热线:
 
 
copyright© 2003-2009 宜昌亿腾信息服务有限公司 All Rights Reserved
公司地址:湖北省宜昌市东山大道129号时代天骄7FA05   邮编:443000   
全国免费热线:800 880 3058   电话总机:0717 - 6466608 6466782 6453806 6855676
直销热线:总机转8001   渠道热线:总机转8007   网建热线:总机转8041   财务热线:总机转8010
售后技术专线:0717-6463660   传真号码:0717-6466783   投诉专线:总机转8009
鄂ICP备05003992号许可证编号 B2-20030065号