3.1 Java程序結構
3.1.1 Java程序構成
見P38 例3.1
說明:
?。?)Java源程序一般包括Java包引入(如果有的話)和類定義兩部分;
?。?)Java程序必須包含一個可被外界所直接調用的類,即主類;
(3)一個Java程序可以定義多個類,但只能有一個主類,Java Applet程序的主類是繼承自Applet的子類;Java Application程序的主類是包含main方法的類,應用程序從main方法開始執(zhí)行;
?。?)類定義由類聲明語句和類體組成;
?。?)類聲明語句用來說明類的名稱、訪問權限及類的屬性;
(6)類體也由兩部分組成:成員變量和成員方法;
?。?)成員變量為類中定義的變量(又稱屬性、域),用來說明類的狀態(tài)和特性。定義成員變量需要聲明成員變量的名稱、類型。
?。?)成員方法為類中定義的方法,用來實現(xiàn)類的功能和行為,是完成任務的關鍵。Java Application程序中一定要有main()主方法。而Java Applet程序一般要有init( )初始化方法或paint(Graphics g)畫圖方法;
?。?)類體中除了成員變量和成員方法說明語句外沒有其他語句,Java規(guī)定所有操作性語句必須放在成員方法中;
?。?0)Java方法類似于其他語言中的函數(shù),可以調用,可以有返回值。成員方法可以繼承父類的方法,也可以自定義成員方法。方法中也可以定義局部變量。
3.1.2 Java語句
語句以分號“;”作為結束標志
Java語句分為說明性語句和操作性語句。
說明性語句用來說明包和類的引入、類的聲明、變量的聲明
如:import java.applet.Applet ;
操作性語句有表達式語句、復合語句、選擇語句和循環(huán)語句等
1.表達式語句
int k, i=3 , j=4;
k=i*j;
2.復合語句
復合語句也稱為塊(block)語句,是包含在一對大括號“{ }”中的任意語句序列。從語法上講,一個復合語句被視為一個簡單語句。
3.2 選擇語句
3.2.1 if語句
格式: if (條件表達式)
語句
功能:條件表達式為true就執(zhí)行語句
例: int i=70; char c='A';
if(i>=c) System.out.println("A小");
System.out.println("結束");
3.2.2 if……else語句
格式: if (條件表達式)
語句1
else
語句2
功能:條件表達式為true就執(zhí)行語句1,為false執(zhí)行語句2
例:if('A'>'a')
System.out.println("A比a大") ;
else
System.out.println("A比a小") ; // A65,a97,所以輸出A比a小
System.out.println("結束");
3.2.2 if……else 復合結構
格式: if(條件表達式1) 語句1
else if (條件表達式2) 語句2
…………
else if (條件表達式n) 語句n
else 語句 n+1
功能:如果某個條件表達式的值為true,就執(zhí)行它后面的語句,其余部分被忽略,若條件表達式都為假,執(zhí)行else后語句。
例:public class SC{
public static void 輸入分數(shù)(int a){
char 級別;
if (a>=90) 級別='優(yōu)';
else if (a>=80) 級別='良';
else if (a>=60) 級別='中';
else 級別='差';
System.out.println("考試等級為 "+級別); }
public static void main(String arg[]) throws Exception{
if(arg.length==0) System.out.println("您沒有輸入任何參數(shù)") ;
else if(arg.length==1)
輸入分數(shù)(Integer.parseInt(arg[0])); //arg[0]強制轉換成int型
else {System.out.println("您輸入的參數(shù)太多了") ;
System.out.println("命令行參數(shù)個數(shù)為"+arg.length) ; }
} }
執(zhí)行:java SC 75 // 輸出:考試等級為 中
java SC // 輸出:您沒有輸入任何參數(shù)
java SC 75 86 // 輸出:您輸入的參數(shù)太多了
// 命令行參數(shù)個數(shù)為2
3.2.4 switch開關語句
格式:switch (表達式) {
case 常量1:[語句塊1;] [break;]
…………
case 常量n : [語句塊n;] [break;]
[default: 語句塊n+1;]
}
功能:先計算switch表達式,再與每個case常量表達式值相比較,若相同,則執(zhí)行相應語句被執(zhí)行。若都不同,則執(zhí)行default語句n+1(若有的話)
說明:
1.switch后表達式必須是整型,字符型;
2.每個case的常量必須不同;
3.若沒有break,程序將繼續(xù)執(zhí)行下一個case語句;
4.default位置可任意,但要注意break
例:int a=80,b=9;
char oper='/';
switch(oper) {
case '+' : System.out.println(a+"+"+b+"="+(a+b)); break;
case '-' : System.out.println(a+"-"+b+"="+(a-b)); break;
case '*' : System.out.println(a+"*"+b+"="+(a*b)); break;
case '/' : System.out.println(a+"/"+b+"="+(a/b)); break;
default : System.out.println("操作符錯誤");
結果:80/9=8 //因為是整型數(shù)相除
思考:
?。?)沒有break的情況(將會執(zhí)行“/”,“*”,“default”行);
?。?)若操作數(shù)都不符,default改變位置,能否執(zhí)行?(能),但后面要加“break”
例: public class SC{
public static void main(String a[])
{ int i=0,j=5;
switch(i) {
case 0: switch(j){
case 1: System.out.print("A"); break;
case 2: System.out.print("B"); break;
default:System.out.print("C") ; break; }
case 1: switch(j){
case 4: System.out.print("X"); break;
case 5: System.out.print("Y"); break; }
default: System.out.print("Z"); break; }}}
運行結果: CYZ
3.3 循環(huán)語句
3.3.1 for循環(huán)語句(與C、C++相同)
格式: for(賦初值;判斷條件;循環(huán)控制變量增減方式)
{ 語句塊 }
功能:(1)第一次進入for循環(huán)時,對循環(huán)控制變量賦初值;
?。?)根據判斷條件檢查是否要繼續(xù)執(zhí)行循環(huán)。為真執(zhí)行循環(huán)體內語句塊,為假則結束循環(huán);
?。?)執(zhí)行完循環(huán)體內語句后,系統(tǒng)根據“循環(huán)控制變量增減方式”改變控制變量值,再回到步驟(2)根據判斷條件檢查是否要繼續(xù)執(zhí)行循環(huán)。
例:public class SC {
public static void main(String args[]) {
int j=0 ;
for(int i=0 ; i<=5 ; i++) {
j+=i ;
System.out.println("j="+j) ; }
} }
運行結果:j=0
j=1
j=3
j=6
j=10
j=15
3.3.2 while循環(huán)語句
格式:while (條件表達式)
循環(huán)語句塊
功能:先計算條件表達式,為true,則執(zhí)行循環(huán)語句塊,為false則跳出循環(huán)。
例:public class SC{
public static void main(String args[]) {
char c='a' ;
while(c<='e') {
System.out.print(c+" ") ;
c=(char)(c+1) ; }
} }
運行結果:a b c d e
3.3.3 do…while循環(huán)語句
格式: do { 循環(huán)體 }
while(條件表達式) ;
注意:while后面的“;”
3.3.4 循環(huán)語句的嵌套
例:public class SC {
public static void main(String args[])
{ int i , j ;
for (i=1;i<=9;i++)
{ for (j=1;j<=9;j++)
System.out.print(i+"*"+j+"="+(i*j)+"\t");
System.out.println();}
} }
運行結果:1*1=1 1*2=2…………1*9=9
2*1=2 2*2=4…………2*9=18
……………………
9*1=9 9*2=18…………9*9=81
3.3.5 循環(huán)語句小結
?。?)初始化部分:用來設置循環(huán)的一些初始條件,計數(shù)器清零等;
?。?)循環(huán)體部分:這是反復被執(zhí)行的一段代碼,可以是單語句,也可以是復合語句;
?。?)迭代部分:這是當前循環(huán)結束,下一次循環(huán)開始時執(zhí)行的語句,常用來使計數(shù)器加1或減1;
?。?)終止部分:是一具布爾表達式,每一次循環(huán)要對該表達式求值,以驗證是否滿足循環(huán)終止條件。
3.4 跳轉語句
Java支持3種跳轉語句:break , continue , return
3.4.1 break語句
格式:break ;
功能:(1)退出switch結構;
?。?)退出當前一層循環(huán)。
例:見P51
3.4.2 帶標號的break語句
格式:標識符: //標識符應在break前面
……
break 標識符 ;
功能:直接跳轉到標識符處,可以退出多重循環(huán);
例:public class SC{
public static void main(String args[]) {
int i,j,k=0;
ABC: for(i=0,j=0;i<10 && j<20;i++,j+=5) {
for(;k<10;) {
k = k + 1;
break ABC; }
System.out.println("i = " + i + " j = " + j); }
System.out.println("Exit for loop==> i = " + i);
System.out.println("Exit for loop==> j = " + j);
System.out.println("Exit for loop==> k = " + k);
} }
運行結果:Exit for loop==> i =0
Exit for loop==> j =0
Exit for loop==> k =1
若去除“break ABC;”語句運行結果:
i=0 j=0
i=1 j=5
i=2 j=10
i=3 j=15
Exit for loop==> i =4
Exit for loop==> j =20
Exit for loop==> k =10
例: int i=3 j;
outer: while(i>0) {
j=3;
iner: while(j>0) {
if(j<2) break outer;
System.out.println(j+”and”+i);
j--;
} i-- ; }
3.4.3 continue語句
格式:continue ;
功能:只有用在循環(huán)結構中,跳過循環(huán)體中尚未執(zhí)行的語句,重新開始下一輪循環(huán)。從循環(huán)體第一個語句開始執(zhí)行。
例:public class SC {
public static void main(String args[]) {
int m=0 ;
do { m++ ;
if(m/3==0) continue ; //去除此行語句則輸出5個“您好!”
System.out.println("您好!") ; }
while(m<5) ; } }
運行結果:輸出3個“您好!”
3.4.4 帶標號的continue語句
格式:標識符:
……
continue 標識符;
功能:用標號標出想跳到的語句,繼續(xù)重復執(zhí)行程序。
說明:“break 標識符;”是結束循環(huán);“continue 標識符;”是繼續(xù)循環(huán)。
例:P53
3.4.5 return語句
格式:return [表達式] ;
功能:返回調用的語句,執(zhí)行它的下一條語句,可以帶參數(shù)返回。
說明:當方法用void聲明時,說明不需要返回值(即返回類型為空),使用不帶參數(shù)return語句。不帶參數(shù)return語句可以省略。
例:public class SC {
public static int Mul( )
{ int m=1;
for (int i=1 ; i<=5; i++)
m=m*i;
return m; }
public static void main(String args[])
{ System.out.println("5!="+ Mul( )); } }
運行結果:5!=120
作業(yè):P56 3-3
方法一:public class SC{
public static void main(String arg[]){
char c='A';
while(c<='E') {
switch(c)
{case 'A': System.out.println("A 等級的分數(shù)段是90分以上");break;
case 'B': System.out.println("B 等級的分數(shù)段是80~90分以上");break;
case 'C': System.out.println("C 等級的分數(shù)段是70~80分以上");break;
case 'D': System.out.println("D 等級的分數(shù)段是60~70分以上");break;
case 'E': System.out.println("E 等級的分數(shù)段是60分以下");break; }
c++;}}}
方法二:import java.io.* ;
public class SC{
public static void main(String arg[]) throws IOException{
char c=(char)System.in.read();
// System.in.read( )只接受一個鍵盤輸入字符,且是int型
switch(c)
{case 'A': System.out.println("A 等級的分數(shù)段是90分以上");break;
case 'B': System.out.println("B 等級的分數(shù)段是80~90分以上");break;
case 'C': System.out.println("C 等級的分數(shù)段是70~80分以上");break;
case 'D': System.out.println("D 等級的分數(shù)段是60~70分以上");break;
case 'E': System.out.println("E 等級的分數(shù)段是60分以下");break;
default : System.out.println("輸入等級錯誤!"); }}}