------Java培訓、Android培訓、iOS培訓、.Net培訓、期待與您交流! -------
java語句中的順序結構,選擇結構以及循環結構,三種結構的互相嵌套能夠窮盡一切算法的事實,我在這裏就不多贅述。下面我們直接正題:
第一:順序結構
順序結構是最容易的。就是按照從上到下的順序依次實現。
<span style="font-size:14px;">int a=1;
int b=3;
int c=a+b;
System.out.println(c);</span>
第二:選擇結構
if語句、swithc語句
if語句有三種結構:在瞭解if語句的三種結構之前,我們需要了解if結構的構成。if是關鍵字,if後面的小括號裏的內容,是if的判斷表達式。如果括號內的判斷表達式結果爲true,就會執行緊緊接着的花括號裏的內容。如果判斷表達式的結果爲false,就不執行花括號的內容。當然後面的花括號裏如果只有一條語句的話,是可以省略的。如果有多條語句就不能省略。
第一種格式:if(){…………}這種情況的if只做一次判斷,然後執行花括號的內容。
<span style="font-size:14px;">int a=2;
if(a==2){
System.out.println("我愛黑馬");</span>
第二種格式:if(){…………}else{…………}。這一種格式相對第一種來說,多了一個else關鍵字。else在英語中是其餘的意思。如果程序要執行else關鍵字後面的語句,就要滿足if條件爲false。因爲只有if條件爲false,按照順序結構的流程,程序才能接下來執行else中的。else有一個潛在的隱含條件,就是否定其他的if條件。
int a=50;
if(a>20){
System.out.println(a);
}
else {
System.out.println(a+1);
}
第三種格式:f(){…………}else if(){…………}…………else{…………}第三種表達式可能被認爲是最難的,因爲這裏的判斷條件更多。而且第三種寫法會有很多變體,需要考慮。else同樣也是對前面多有條件的否定。比如
int a=20;
if(a>10){
System.out.println("我愛黑馬");
}
if(a<10){
System.out.println("我愛程序猿");
}
else{
System.out.println("我就是愛黑馬");
}
注意:這道題,就很有迷惑性,許多同學會想,這道題的輸出只會有”我愛黑馬“的四個字,因爲第二個if判斷的是(a<10);而else是對前面所有內容的否定,因此else的實際條件就是既不大於10,也不小於10,就是隻有等於10的時候,纔會輸出”我就是愛黑馬".但是真實的輸出卻是:
我愛黑馬
我就是愛黑馬
第一個if判斷我們就不說了,因爲是一定會打印的。而第二個輸出語句,是因爲else實際上否定的是其上面的一個if的判斷條件(a<10).也就是說else的真實判斷條件爲(a>=10)。所以會輸出這個結果。如果只想讓其輸出第一條語句,就可以再第二個if的前面加上else。也就是原代碼改寫爲:
int a=20;
if(a>10){
System.out.println("我愛黑馬");
}
else if(a<10){
System.out.println("我愛程序猿");
}
else{
System.out.println("我就是愛黑馬");
}
格式:
switch(表達式) {
case 值1:
語句體1;
break;
case 值2:
語句體2;
break;
...
default:
語句體n+1;
break;
}
格式解釋說明:
switch:說明這是switch語句。
表達式:可以是byte,short,int,char
JDK5以後可以是枚舉
JDK7以後可以是字符串
case:後面的值就是要和表達式進行比較的值
break:表示程序到這裏中斷,跳出switch語句
default:如果所有的情況都不匹配,就執行這裏,相當於if語句中的else
int x = 2,y=3;
switch(x)
{
default:
y++;
case 3:
y++;
break;
case 4:
y++;
}
System.out.println("y="+y);
輸出結果爲:y=5;因爲case都不滿足,所以就走了default,但是default後面沒有break;也就是沒有結束,因此y++繼續執行,直到遇到第一個break爲止。注意事項:
A: case後面只能是常量,不能是變量,而且,多個case後面的值不能出現相同的
B: default可以省略,但是不建議,因爲它的作用是對不正確的情況給出提示。
特殊情況:
case就可以把值固定。
C: break可以可以省略,但是結果可能不是我們想要的。
會出現一個現象:case穿透。
D: default可以在任意位置。但是建議在最後。
E: switch語句的結束條件
a: 遇到break就結束了
b: 執行到末尾就結束了
if語句和switch語句各自的場景
A:if
針對boolean類型的判斷
針對一個範圍的判斷
針對幾個常量的判斷
B:switch
針對幾個常量的判斷
for循環用途很多,比如當需要計算1到100之和的時候,就可以藉助for循環。for循環最大的用處就是能夠解決數組的遍歷問題。這樣能夠讓我們輕鬆獲取需要的每個元素,並對其進行操作。對數組的遍歷,當然還有其他方法,這裏並不贅述。
第二種:while循環。while循環很簡單while(){…………}。如果while後面的括號內的條件爲true,就會執行方法體內容。這裏也介紹一個死循環。
while(true){
<span style="white-space:pre"> </span>System.out.println(我愛黑馬死心塌地");
}
有些同學在碰到死循環時,不知該如何結束程序,當然直接關閉控制檯是一種,另一種就是ctrl+c,也可以讓運行終止。while死循環也是比較常見的,因爲在我們不知道需要循環幾次的情況下,用for就比較麻煩,但是while就看起來很方便,只要不停的循環,等到需要我們想要的結果出現時,讓那個結果做一個判斷,如果滿足,通過break關鍵字的使用,就可以輕易退出當前的while循環。
最後補充一下,用while與用for的場景。for循環一般用於知道要循環多少次,而while則是不知道要循環多少次。
/*
while循環和for循環的區別?
使用區別:如果你想在循環結束後,繼續使用控制條件的那個變量,用while循環,否則用for循環。不知道用for循環。
因爲變量及早的從內存中消失,可以提高內存的使用效率。
其實還有一種場景的理解:
如果是一個範圍的,用for循環非常明確。
如果是不明確要做多少次,用while循環較爲合適。
*/
class WhileDemo {
public static void main(String[] args) {
//for循環實現
for(int x=0; x<10; x++) {
System.out.println("學習Java技術哪家強,中國北京找黑馬");
}
//這裏不能在繼續訪問了
//System.out.println(x);
//while循環實現
int y = 0;
while(y<10) {
System.out.println("學習Java技術哪家強,中國北京找黑馬");
y++;
}
//這裏是可以繼續訪問的
System.out.println(y);
}
}
上面這個例子,就將while與for循環之間的特徵表現出來了。
第三種循環 :do {循環體語句;}while(判斷條件語句);
擴展格式:初始化語句;do {循環體語句;控制條件語句;}while(判斷條件語句);
注意:
三種循環的區別:第一:do...while循環至少執行一次循環體,第二:for和while必須先判斷條件是否是true,然後後才能決定是否執行循環體。
第四:控制跳轉語句
break:用於switch語句及循環中。離開這些場景就無意義了。break跳出循環,是跳出單層循環。如果要跳多層循環,需要配合標籤語句。
continue:用於循環中。表示此次循環到此爲止,進行下一次循環。
return:用於結束方法,返回方法的結果。也可以用於控制循環。