Java語句及其控制結(jié)構(gòu)
import java.applet.Applet; //包引入語句
public class GetSquare extends Applet;//聲明類語句
1. 表達式語句
int k, i=3, j=4;
k=i+j;
System.out.println(″k=″+k);
2. 復合語句
class Block {
public static void main(String args[]) {
int k, i=3, j=4;
k=i+j;
System.out.println(″k=″+k);
{
float f;
f=j+4.5F;
i++;
System.out.println(″f=″+f);
}
System.out.println(″i=″+i);
}
}
選擇語句
利用選擇語句結(jié)構(gòu)可以根據(jù)條件控制程序流程,改變程序執(zhí)行的順序。
if語句
if語句的語法格式為:
if (條件表達式)
s1語句;
這是最簡單的單分支結(jié)構(gòu)。條件表達式的值為true,就執(zhí)行s1語句,否則就忽略s1語句。s1語句可以是復合語句。
if…else語句
if語句通常與else語句配套使用,形成二分支結(jié)構(gòu)。它的語法格式為:
if (條件表達式)
s1語句;
else
s2語句;
當條件表達式的值為true,就執(zhí)行s1語句,忽略else和s2語句;條件表達式的值為false,程序忽略s1語句,執(zhí)行else后面的s2語句。s1和s2都可以是復合語句。
if…else復合結(jié)構(gòu)
對于復雜的情況,可以嵌套使用if…else語句。它的語法格式為:
if (條件表達式1)
s1語句;
else if (條件表達式2)
s2語句;
else
s3語句;
在這里依次計算條件表達式,如果某個條件表達式的值為true,就執(zhí)行它后面的語句,其余部分被忽略;所有表達式的值都為false,就執(zhí)行最后一個else后的s3語句。s1、s2和s3都可以是復合語句。
switch開關(guān)語句
雖然嵌套的條件語句可實現(xiàn)多個分支處理,但嵌套太多時容易出錯和混亂,這時可以使用開關(guān)語句switch處理。實際上開關(guān)語句switch也是一種if…else結(jié)構(gòu),不過它使你在編程時很容易寫出判斷條件,特別是有很多條件選項的時候。
開關(guān)語句switch的語法格式:
switch (表達式) {
case 常量1:
語句1;
break;
case 常量2:
語句2;
break;
......
default:
語句n;
}
其中switch、case、default是關(guān)鍵字,default子句可以省略。開關(guān)語句先計算表達式,然后將表達式值與各個常量比較,如果表達式值與某個常量相等,就執(zhí)行該常量后面的語句;如果都不相等,就執(zhí)行default下面的語句。如果無default子句,就什么都不執(zhí)行,直接跳出開關(guān)語句。
使用開關(guān)語句時,注意以下幾點:
• case后面的常量必須是整數(shù)或字符型,而且不能有相同的值;
• 通常在每一個case中都應使用break語句提供一個出口,使流程跳出開關(guān)語句。否則,在第一個滿足條件case后面的所有語句都會被執(zhí)行,這種情況叫做落空。
循環(huán)語句
循環(huán)可使程序根據(jù)一定的條件重復執(zhí)行某一部分程序代碼,直到滿足終止循環(huán)條件為止。
Java中提供的循環(huán)語句有: 確定次數(shù)循環(huán)(for)、條件循環(huán)(while)、先執(zhí)行后判定循環(huán)(do)。
for循環(huán)語句
如果希望程序的一部分內(nèi)容按固定的次數(shù)重復執(zhí)行,通常可以使用for循環(huán)。for循環(huán)采用一個計數(shù)器控制循環(huán)次數(shù),每循環(huán)一次計數(shù)器就計數(shù),直到完成給定的循環(huán)次數(shù)為止。
for循環(huán)的語法格式為:
for (表達式1; 表達式2; 表達式3)
循環(huán)體
其中表達式1可以給出計數(shù)器的初值,是一個賦值語句;表達式2指出循環(huán)結(jié)束條件,是一個邏輯表達式;表達式3指出計數(shù)器每次的增量,是一個賦值語句。
注意: 計數(shù)器可在for語句之前定義,也可在循環(huán)括號中定義。計數(shù)器增量為1時常寫成增量運算的形式,以加快運算速度。根據(jù)需要,增量可以大于或小于1。增量計算也可以放在循環(huán)體中進行,即把表達式3移到循環(huán)體內(nèi)的適當位置,原位置為空。
使用循環(huán)語句時常常會遇到死循環(huán)的情況,也就是無限制地循環(huán)下去。所以在使用for循環(huán)時,要注意初值、終值和增量的搭配。終值大于初值時,增量應為正值,終值小于初值時,增量應為負值。編程時必須密切關(guān)注計數(shù)器的改變,這是實現(xiàn)正常循環(huán)避免陷入死循環(huán)的關(guān)鍵。
while循環(huán)語句
while循環(huán)不像for循環(huán)那么復雜,while循環(huán)只需要一個條件判斷語句,便可以進行循環(huán)操作。
while循環(huán)的語法格式為:
while (條件表達式)
循環(huán)體
其中while是關(guān)鍵字。每次循環(huán)之前都要計算條件表達式,其值為true時,就執(zhí)行一次循環(huán)體中的語句,然后再計算條件表達式,決定是否再次執(zhí)行循環(huán)體中的語句;如果條件表達式的值為false時,就跳出循環(huán)體,執(zhí)行循環(huán)體下面的語句。
注意: while循環(huán)中的條件表達式是邏輯表達式,所以循環(huán)體中一定要有改變條件表達式值的語句,使條件表達式的值有機會變?yōu)閒alse,否則會陷入死循環(huán)。
do…while循環(huán)語句
do…while循環(huán)與while循環(huán)相反,是先執(zhí)行循環(huán)體中的語句,再計算while后面的條件表達式,若條件表達式值為false則跳出循環(huán);否則繼續(xù)下一輪循環(huán)。
有些情況下,不管條件表達式的值是為true還是false,都希望把指定的語句至少執(zhí)行一次,那么就應使用do…while循環(huán)。
do…while循環(huán)的語法格式為:
do {
循環(huán)體
} while (條件表達式);
其中do、while是關(guān)鍵字。程序首先執(zhí)行do下面的循環(huán)體,然后計算while后面條件表達式的值,如果其值為true,則重復執(zhí)行循環(huán)體;否則,就結(jié)束循環(huán)。
與while循環(huán)相同,do循環(huán)在循環(huán)體中也一定要有改變條件表達式值為false的語句,否則會陷入死循環(huán)。do…while循環(huán)控制并不是很常用,但有時卻非常重要,使用時特別注意不要忘記了while語句結(jié)尾處的分號“;”。
循環(huán)語句嵌套
ex:做個例子 是累計求和的。
public class Sum1 {
public static void main(String args[]) {
int n=10, sum=0;
while (n>0) {
sum=0;
for (int i=1; i<=n; i++)
sum+=i;
System.out.println(″前″+n+″個數(shù)的總和為: ″+sum);
n--;
}
}
}
循環(huán)語句小結(jié)
一個循環(huán)一般應包括4部分內(nèi)容。
(1) 初始化部分: 用來設置循環(huán)的一些初始條件,計數(shù)器清零等。
(2) 循環(huán)體部分: 這是反復被執(zhí)行的一段代碼,可以是單語句,也可以是復合語句。
(3) 迭代部分: 這是在當前循環(huán)結(jié)束,下一次循環(huán)開始時執(zhí)行的語句,常用來使計數(shù)器加1或減1。
(4) 終止部分: 通常是一個布爾表達式,每一次循環(huán)要對該表達式求值,以驗證是否滿足循環(huán)終止條件。
跳轉(zhuǎn)語句
跳轉(zhuǎn)語句可以無條件改變程序的執(zhí)行順序。Java支持3種跳轉(zhuǎn)語句: break、continue和return。
break語句
break語句提供了一種方便的跳出循環(huán)的方法。使用break語句可以立即終止循環(huán),跳出循環(huán)體,即使循環(huán)沒有結(jié)束也如此。
break語句的使用示例,輸出結(jié)果如圖3.10所示。
class B {
public static void main(String args[]) {
boolean test=true;
int i=0;
while (test) {
i=i+2;
System.out.println(″i=″+i);
if (i>=10)
break;
}
System.out.println(″ i為″+i+″時循環(huán)結(jié)束″);
}
}
帶標號的break語句
標號是標記程序位置的標識符。break語句只能跳轉(zhuǎn)到循環(huán)語句下面的第一條語句上,而帶標號的break語句可直接跳轉(zhuǎn)到標號處。正常的break只退出一重循環(huán),如果要退出多重循環(huán),可以使用帶標號的break語句。它的語法格式為:
標識符:
…
break 標識符;
做個例子說明
運行該工程,正常情況下可從鍵盤接受16個輸入字符,但當輸入b按回車時,break lab1語句就會結(jié)束二重循環(huán)。
class B1 {
public static void main(String args[]) throws java.io.IOException {
char ch;
lab1: // 此處為標號標識符
for (int i=0; i<4; i++)
for (int j=0; j<4; j++) {
ch=(char)System.in.read();
System.in.skip(2);
if (ch==′b′)
break lab1;//跳到標號標識符處
if (ch==′c′)
System.out.println(″繼續(xù)″);
}
System.out.println(″結(jié)束兩重循環(huán)″);
}
}
continue語句
continue語句只能用在循環(huán)結(jié)構(gòu)中,它跳過循環(huán)體中尚未執(zhí)行的語句,重新開始下一輪循環(huán),從循環(huán)體第一個語句開始執(zhí)行。
下面的可以輸出1~9中除6以外所有偶數(shù)的平方值
class C2 {
public static void main(String args[]) {
for (int i=2;i<=9;i+=2) {
if (i==6)
continue;
System.out.println(i+″ 的平方 = ″+i*i); }
}
}
帶標號的continue語句
Java也支持帶標號的continue語句,它通常用在嵌套循環(huán)的內(nèi)循環(huán)中,可以用標號標出想跳到哪一條語句繼續(xù)重復執(zhí)行程序。其語法格式為:
標識符:
…
continue 標識符;
帶標號的continue語句的使用
class C3{
public static void main(String args[]) {
lab1:
for (int i=1; i<=3; i++)
for (int j=1; j<=3; j++) {
System.out.println(″i:″+i+″ j:″+j);
if (i+j>3) {
System.out.println(″Continue″);
continue lab1;
}
System.out.println(″i=″+i+″ j=″+j);
}
}
}
求100~200間的所有素數(shù)。用嵌套的for循環(huán)做
public class Find {
public static void main(String args[]) {
System.out.println(″ ** 100~200間的所有素數(shù) **″);
int n=0;
outer:
for (int i=101; i<200; i+=2) {
int k=15;
for (int j=2; j<=k; j++)
if (i%j==0)
continue outer;
System.out.print(″ ″+i);
n++;
if (n<10)
continue;
System.out.println();
n=0;
}
System.out.println();
}
}
return語句
return語句用于方法的返回上,當程序執(zhí)行到return語句時,終止當前方法的執(zhí)行,返回到調(diào)用這個方法的語句。return語句通常位于一個方法體的最后一行,有帶參數(shù)和不帶參數(shù)兩種形式,帶參數(shù)形式的return語句退出該方法并返回一個值。
當方法用void聲明時,說明不需要返回值(即返回類型為空),應使用不帶參數(shù)return語句。不帶參數(shù)的return語句也可以省略,當程序執(zhí)行到這個方法的最后一條語句時,遇到方法的結(jié)束標志}就自動返回到調(diào)用這個方法的程序中。
帶參數(shù)的return語句格式為:
return 表達式;
當程序執(zhí)行到這個語句時,首先計算“表達式”的值,然后將表達式的值返回到調(diào)用該方法的語句。返回值的數(shù)據(jù)類型必須與方法聲明中的返回值類型一致,可以使用強制類型轉(zhuǎn)換來使類型一致。
帶參數(shù)的return語句的使用
class CircleArea {
final static double PI=3.14159;
public static void main(String args[]) {
double r1=8.0, r2=5.0;
System.out.println(″半徑為″+r1+″的圓面積=″+area(r1));
System.out.println(″半徑為″+r2+″的圓面積=″+area(r2));
}
static double area(double r) {
return (PI*r*r);
}
}