熱門問題:國際域名注冊信息更新 郵箱設置 主機管理 ftp ICP備案問題集錦 如何使用SQL數據庫
 
 
您現在的位置:首頁 > 常見問題 > 軟件常見問題 > JSP程序模闆

JAVA 的程序流

時間:2009-05-30     來源:億騰科技    
 

因爲JSP 的useBean需要用JAVA語言來實現,然後編譯成CLASS文件放(fàng)入TOMCAT的BIN目錄下(xià)。所以在這裏我(wǒ)(wǒ)們一(yī)同學習一(yī)下(xià)JAVA的程序流:

與C、 C++相同,Java程序通過流控制來執行程序流,完成一(yī)定任務的語句組成的。語句可以是單一(yī)的一(yī)條語句(如c=a+b;),也可以複合語句。
下(xià)面我(wǒ)(wǒ)們分(fēn)别來介紹Java中(zhōng)的流控制語句,包括
分(fēn)支語句 :if-else,break,switch, return.

循環語句 :while,do-while,for, continue.

例外(wài)處理語句 :try-catch-finally,throw

最後我(wǒ)(wǒ)們簡單介紹一(yī)下(xià)注釋語句
分(fēn)支語句

分(fēn)支語句提供了一(yī)種控制機制,使得程序的執行可以跳過某些語句不執行,而轉去(qù)執行特定的語句。

條件語句if-else.

if-else語句根據判定條件的真假來執行兩種操作中(zhōng)的一(yī)種,格式爲:

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


1.布爾表達式boolean-expression是任意一(yī)個返回布爾型數據的達式(這比C、 C++的限制要嚴格)。

2.每個單一(yī)的語句後都必須有分(fēn)号。

3.語句statement1,statement2可以爲複合語句,這時要用大(dà)括号{}。建議對單一(yī)的語句也用大(dà)括号括起,這樣程序的可讀性強,而且有利于程序的擴充(可以在其中(zhōng)填加新的語句)。{}外(wài)面不加分(fēn)号。

4.else子句是任選的。

5.若布爾表達式的值爲true,則程序執行statement1,否則執行statement2。

6.if-else語句的一(yī)種特殊形式爲:

if(expression1){
statement1
}else if (expression2){
statement2
}……
}else if (expressionM){
statementM
}else {
statementN
}
[else子句不能單獨作爲語句使用,它必須和if配對使用。else總是與離(lí)它最近的if配對。可以通過使用大(dà)括号{}來改變配對關系。]

7.舉例:
比較兩個數的大(dà)小(xiǎo),并按從小(xiǎo)到大(dà)的次序輸出。

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 


例.判斷某一(yī)年是否爲閏年。

閏年的條件是符合下(xià)面二者之一(yī):①能被4整除,但不能被100整除;②能被4整除,又(yòu)能被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.


該例中(zhōng),方法1用一(yī)個邏輯表達式包含了所有的閏年條件,方法2使用了if-else語句的特殊形式,方法3則通過使用大(dà)括号{}對if-else進行匹配來實現閏年的判斷。大(dà)家可以根據程序來對比這三種方法,體(tǐ)會其中(zhōng)的聯系和區别,在不同的場合選用适合的方法。

多分(fēn)支語句switch

switch語句根據表達式的值來執行多個操作中(zhōng)的一(yī)個,它的般格式如下(xià):

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


1.表達式expression可以返回任一(yī)簡單類型的值(如整型、實數型、字符型),多分(fēn)支語句把表達式返回的值與每個case子句中(zhōng)的值相比。如果匹配成功,則運行該case子句後的語句序列。

2.case子句中(zhōng)的值values必須是常量,而且所有case子句中(zhōng)的值是不同的。

3.default子句是任選的。當表達式的值與任一(yī)case子句中(zhōng)的都不匹配時,程序執行default後面的語句。如果表達式的值與任一(yī)case子句中(zhōng)的值都不匹配且沒有default子句,則程序不作任何操作,而是直接跳出switch語句。

4.break語句用來在執行完一(yī)個case分(fēn)支後,使程序跳出switch語句,即終止switch語句的執行。因爲case子句隻是起到一(yī)個标号的作用,用來查找匹配的入口,從此處開(kāi)始執行,對後面的case子句不再進行匹配,而是直接執行其後的語句序列,因此該在每個case分(fēn)支後,要用break來終止後面的case分(fēn)支語句的執行。

在一(yī)些特殊情況下(xià),多個不同的case值要執行一(yī)組相同的操作,這時可以不用break。

5.case分(fēn)支中(zhōng)包括多個執行語句時,可以不用大(dà)括号{}括起。

6.switch語句的功能可以用if-else來實現,但在某些情況下(xià),使switch語句更簡煉,可讀性強,而且程序的執行效率提高。

7.舉例:

例.根據考試成績的等級打印出百分(fēn)制分(fēn)數段。

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 

從該例中(zhōng)我(wǒ)(wǒ)們可以看到break語句的作用。


break語句

1.在switch語中(zhōng),break語句用來終止switch語句的執行。使程序switch語句後的第一(yī)個語句開(kāi)始執行。

2.在Java中(zhōng),可以爲每個代碼塊加一(yī)個括号,一(yī)個代碼塊通常用大(dà)括号{}括起來的一(yī)段代碼。加标号的格式如下(xià):

BlockLabel:{codeBlock}

break語句的第二種使用情況就是跳出它所指定的塊,并從緊挨該塊的第一(yī)條語句處執行。其格式爲:

break BlockLabel;
例如:
a:{……//标記代碼塊a
b:{……//标記代碼塊b
c:{……//标記代碼塊c
break b;
…… //willnotbeexecuted
}
…… //willnotbeexecuted
}
…… //willnotbeexecuted
}
…… /executefromhere
}


3.與C、 C++不同,Java中(zhōng)沒有goto語句來實現任意的跳轉,因爲goto語句破壞程序的可讀性,而且影響編譯的優化。但是從上例可以看出,Java用break來實現goto語句所特有的一(yī)些優點。如果break後所指定的标号不是一(yī)個代碼塊的标号,而是一(yī)個語句,則這時break完全實現goto的功能。不過應該避免這種方式的使用。


返回語句return

return語句從當前方法中(zhōng)退出,返回到調用該方法的語句處,繼續程序的執行。返回語句有兩種格式:


1.return expression

返回一(yī)個值給調用該方法的語句,返回值的數據類型必須用方法聲明中(zhōng)的返回值類型一(yī)緻。可以使用強制類型轉換來使類型一(yī)緻。

2.return

當方法說明中(zhōng)用void聲明返回類型爲空時,應使用這種格式,不返回任何值。

return語句通常用在一(yī)個方法體(tǐ)的最後,以退出該方法并返一(yī)個值。Java中(zhōng),單獨的return語句用在一(yī)個方法體(tǐ)的中(zhōng)間時,會産生(shēng)編譯錯誤,因爲這時有一(yī)些語句執行不到。但
可以通過把return語句嵌入某些語句(如if-else)來使程序在未執行完方法中(zhōng)的所有語句時退出,例如:

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


循環語句

循環語句的作用是反複執行一(yī)段代碼,直到滿足終止循環條件爲止,一(yī)個循環一(yī)般應包括四部分(fēn)内容:

1.初始化部分(fēn)(initialization):用來設置循環的一(yī)些初始條件,計數器清零等。

2.循環體(tǐ)部分(fēn)(body):這是反複循環的一(yī)段代碼,可以是單一(yī)一(yī)條語句,也可以是複合語句。

3.叠代部分(fēn)(iteration):這是在當前循環結束,下(xià)一(yī)次循環開(kāi)始執行的語句,常常用來使計數器加1或減1。

4.終止部分(fēn)(termination):通常是一(yī)個布爾表達式,每一(yī)次循環要對該表達式求值,以驗證是否滿足循環終止條件。

Java中(zhōng)提供的循環語句有:while語句,do-while語句和for語句,下(xià)分(fēn)别介紹。


while語句

while語句實現"當型"循環,它的一(yī)般格式爲;

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


1.當布爾表達式(termination)的值爲true時,循環執行大(dà)括号中(zhōng)語句。并且初始化部分(fēn)和叠代部分(fēn)是任選的。

2.while語句首先計算終止條件,當條件滿足時,才去(qù)執行循環當中(zhōng)的語句。這是"當型"循環的特點。


do-while語句

do-while語句實現"直到型"循環,它的一(yī)般格式爲:
[initialization]
do{
body;
[iteration;]
}while (termination);


1.do-while語句首先執行循環體(tǐ),然後計算終止條件,若結果爲true,則循環執行大(dà)括号中(zhōng)的語句,直到布爾表達式的結果爲false。

2.與while語句不同的是,do-while語句的循環體(tǐ)至少執行一(yī)次,這是"直到型"循環的特點。


for語句

for語句也用來實現"當型"循環,它的一(yī)般格式爲:

for(initialization;termination; iteration){

body;

}

1.for語句執行時,首先執行初始化操作,然後判斷終止條件否滿足,如果滿足,則執行循環體(tǐ)中(zhōng)的語句,最後執行叠代部分(fēn)。完成一(yī)次循環後,重新判斷終止條件。

2.可以在for語句的初始化部分(fēn)聲明一(yī)個變量,它的作用域爲一(yī)個for語句。

3.for語句通常用來執行循環次數确定的情況(如對數組元素進行操作),也可以根據循環結束條件執行循環次數不确定的情況。

4.在初始化部分(fēn)和叠代部分(fēn)可以使用逗号語句,來進行多個操作。逗号語句是用逗号分(fēn)隔的語句序列。例如:

for(i=0,j=10;i<j;i++, j--){
……
}
5.初始化、終止以及叠代部分(fēn)都可以爲空語句,三者均爲空的時候,相當于一(yī)個無限循環。


continue語句

1.continue語句用來結束本次循環,跳過循環體(tǐ)中(zhōng)下(xià)面尚未執的語句,接着進行終止條件的判斷,以決定是否繼續循環。對于for語句,在進行終止條件判斷前,還要先執行叠代
語句。它的格式爲:

continue;

2.也可以用continue跳轉到括号指明的外(wài)層循環中(zhōng),這時的格爲

continue outerLable;

例 如 :

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


該例中(zhōng),當滿足j>i的條件時,程序執行完相應的語句後跳轉到外(wài)層循環,執行外(wài)層循環的叠代語句i++;然後開(kāi)始下(xià)一(yī)次循環。

舉例

下(xià)例分(fēn)别用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
可以從中(zhōng)來比較這三種循環語句,從而在不同的場合選擇合适的語句。

例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

該例通過一(yī)個嵌套的for語句來實現。

例外(wài)處理語句

例外(wài)處理語句包括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中(zhōng)可以采用三種注釋方式:

1∥ 用于單行注釋。注釋從∥開(kāi)始,終止于行尾。
2/*…*/用于多行注釋。注釋從/*開(kāi)始,到*/結束,且這種注釋不能互相嵌套。
3/**…*/是Java所特有的doc注釋。它以/**開(kāi)始,到*/結束。這種注釋主要是爲支持JDK工(gōng)具javadoc而采用的。javadoc能識别注釋中(zhōng)用标記@标識的一(yī)些特殊變量,并把doc注釋加入它所生(shēng)成的HTML文件。
 

恰逢ICANN國際大(dà)會,.top域名知(zhī)
億騰科技2015抗戰勝利日放(fàng)假通知(zhī)
35000自然雙拼top保留域名開(kāi)放(fàng)搶
億騰科技2015端午節放(fàng)假通知(zhī)
億騰科技2015勞動節放(fàng)假通知(zhī)
【轉】關于新網的.cn/中(zhōng)國/公司/
搶注top域名,優惠多多更有好禮相
 
 全國免費(fèi)服務熱線:
 
 
copyright© 2003-2009 宜昌億騰信息服務有限公司 All Rights Reserved
公司地址:湖北(běi)省宜昌市東山大(dà)道129号時代天驕7FA05   郵編:443000   
全國免費(fèi)熱線:800 880 3058   電話(huà)總機:0717 - 6466608 6466782 6453806 6855676
直銷熱線:總機轉8001   渠道熱線:總機轉8007   網建熱線:總機轉8041   财務熱線:總機轉8010
售後技術專線:0717-6463660   傳真号碼:0717-6466783   投訴專線:總機轉8009
鄂ICP備05003992号許可證編号 B2-20030065号