4.2 if-else
if(Boolean-expression)
statement
else或者else if
statement
4.3 迭代
while(Boolean-expression)
statement
4.3.1 do-while
do
statement
while(Boolean-expression)
4.3.2 for
for(initialization; Boolean-expression; step)
statement
4.3.3 逗號(hào)操作符
Java里唯一用到逗號(hào)操作符的地方就是for循環(huán)的控制表達(dá)式香椎。通過使用逗號(hào)操作符,可以在for語句內(nèi)定義多個(gè)變量,但是它們必須具有相同的類型。
for(int i=1, j=i+10; i<5; i++, j=i*2){
statement
}
注意:定義多個(gè)變量的這種能力只限于for循環(huán)传透,在其他任何選擇或迭代語句中都不能使用這種方式胳挎。
4.4 Foreach語法
folat[] f = new folat[10];
for(folat x : f){
}
4.5 return
return關(guān)鍵字用途:
- 指定一個(gè)方法返回什么值
- 導(dǎo)致當(dāng)前的方法退出。
返回void的方法中如果沒有return語句其弊,在該方法的結(jié)尾處會(huì)有一個(gè)隱式的return。
4.6 break和continue
break和continue都用于迭代語句的主體部分膀斋。
- break:強(qiáng)行退出循環(huán)梭伐,不執(zhí)行循環(huán)中剩余的語句。
- continue:停止執(zhí)行當(dāng)前的迭代仰担,然后退回循環(huán)起始處糊识,開始下一次迭代。
無限循環(huán)表達(dá)方式:
- while(true)
- for(;;)
4.7 臭名昭著的goto
標(biāo)簽:是后面跟著有冒號(hào)的標(biāo)志符。在java中赂苗,標(biāo)簽當(dāng)前僅當(dāng)位于迭代語句之前愉耙。即如果在標(biāo)簽和迭代語句之間置入任何語句,標(biāo)簽將不起作用拌滋。而在java中需要使用標(biāo)簽的唯一理由就是因?yàn)橛醒h(huán)嵌套存在朴沿,而且想從多層嵌套中break或continue。這是由于break和continue關(guān)鍵詞通常只中斷當(dāng)前循環(huán)鸠真,但若隨同標(biāo)簽一起使用悯仙,它們就會(huì)中斷循環(huán),知道標(biāo)簽所在的地方吠卷。
lable1:
outer-iteration{
inner-iteration{
...
break; //(1)break中斷內(nèi)部迭代锡垄,回到外部迭代。
...
continue; //(2)continue使執(zhí)行點(diǎn)移回內(nèi)部迭代的起始處祭隔。
...
continue lable1;//(3)同時(shí)中斷內(nèi)部迭代以及外部迭代货岭,直接轉(zhuǎn)到lable1處;隨后疾渴,它實(shí)際上是繼續(xù)迭代過程千贯,但卻是從外部迭代開始。
...
break lable1;//(4)會(huì)中斷所有迭代搞坝,并回到lable1處搔谴,但不重新進(jìn)入迭代。也就是說桩撮,它實(shí)際是完全終止了兩個(gè)迭代敦第。
}
}
規(guī)則:
- 一般的continue會(huì)退回最內(nèi)層循環(huán)的開頭,并繼續(xù)執(zhí)行
- 帶標(biāo)簽的continue會(huì)到達(dá)標(biāo)簽的位置店量,并重新進(jìn)入緊接在哪個(gè)標(biāo)簽后面的循環(huán)
- 一般的break會(huì)中斷并跳出當(dāng)前循環(huán)
- 帶標(biāo)簽的break會(huì)中斷并跳出標(biāo)簽所指的循環(huán)
4.8 switch
switch(selector){
case value1 : statement; break;
case value2 : statement; break;
...
default : statement;
}
練習(xí)9 斐波那契數(shù)列
public static void finbonacci(int x){
int k;
for(int i=1,j=1; j<=x; i=j,j=k){
if(j<x && j==1){
System.out.println(i);
System.out.println(j);
k = i + j;
}else if(j == x && x == 1){
k = 1;
}else{
k = i + j;
}
if(k > x){
break;
}else{
System.out.println(k);
}
}
}
public static void finbonacci2(int x){
if(x < 2){
System.out.println(x);
}else{
int i = 1;
int j = 1;
System.out.println(i);
System.out.println(j);
int k = 1;
while (k<x){
k = i + j;
i = j;
j = k;
if(k > x){
break;
}else{
System.out.println(k);
}
}
}
}
練習(xí)10 吸血鬼數(shù)字
public static void vampireNumber(){
for(int i=10; i<100; i++){
for(int j=i; j<100; j++){
int k = i * j;
if(k%100 != 0){
String strIJ = "" + i + j;
String strK = String.valueOf(k);
char[] charIJ = strIJ.toCharArray();
Arrays.sort(charIJ);
char[] charK = strK.toCharArray();
Arrays.sort(charK);
if (Arrays.equals(charIJ, charK)){
System.out.println(i+"X"+j+"="+k);
}
}
}
}
}