第三天(下) 流程控制 if while swtich break continue
與任何程序設計語言一樣,java也用條件語句和循環結構來控制流程.
什麽叫流程控制呢
可以控制程序的執行流程
流程控制的分類
順序結構
程序中最簡單最基本的流程控制,沒有特定的語法結構,按照代碼順序重上往下執行,大部分代碼都是這樣執行.
選擇結構
又叫分支結構,選擇結構有特定法的語法規則,代碼要執行具體的邏輯運算進行判斷,邏輯結果有兩個,所以產生 選擇,按照不同的語句執行
JAVA提供了兩種選擇結構語句 if語句和有些笨重的switch語句
if語句的三種格式
單分支語句
if(條件表達式){
語句
}
雙分支語句
if(條件表達式){
語句
}else{
語句
}
多分支語句
if(條件表達式){
語句
}else if(條件表達式2){
語句
}else if(條件表達式3){
語句
}.......
else{
語句
}
註意:關系表達式無論是簡單還是復雜,結果必須是boolean類型的.
花括號中只有一條語句,括號可以省略,如果是多條不可以省略,建議不省略.
也就是說沒有括號時,只執行後面的一行代碼.
在雙分支語句中else後面是沒有條件表達式的.不會兩個都不執行,也不會兩個都執行,必須也只能執行一個判斷
多分支判斷語句永遠只會執行一個,如果多個條件都成立,只會執行第一個成立的語句整體的判斷語句永遠只會執行一個
在所有條件都不滿足的情況下,執行else語句
if的嵌套
只有當外層 if 的條件成立時,才會判斷內層 if 的條件。
if(條件表達式){
if(條件表達式){
語句
}else{
語句
}
}else{
語句
}
這裏只寫了一種,幾種if可以隨意嵌套
在處理多個選項時,if/else結構變動有些笨拙,所以在java中有和c完全一樣的swtich語句
switch(表達式){
case值1:
語句體
break;
case值2:
語句體
break;
case值3:
語句體
break;
''''''
default:
語句體
break;
}
註意:switch語句將從與選項值相匹配的case標簽開始執行語句,直到遇到break標簽,或者執行完整個switch,如果沒有相應的case久執行default.
default不是必須寫的,也可以寫在任何地方.
switch括號中的表達式只能是×××,字符型,枚舉類型的. 其實swich只支持一種數據類型,那就是整型,其他數據類型都是轉換成整型之後在使用switch的。
case標簽的類型為char,byte,short,int或者是他們的包裝類
java5以後可以為枚舉類型 並且使用枚舉類型是 不必在每個標簽中指明枚舉名
java7開始,可以使字符串字面量
後面的值必須是常量,不能有變
可以把相同功能的case合並例如 case1:case2:System.out.println("");break;
switch的比較 進行switch的實際是哈希值,然後通過使用equals方法比較進行安全檢查,這個檢查是必要的,因為哈希可能會發生碰撞。而hashCode()返回的正是整數型.
如果用string時出現
Cannot switch on a value of type String for source level below 1.7. Onlyconvertible int values or enum variablesare permitted
一般是因為你導入的項目版本較低導致的;
解決辦法:
右鍵你的項目--->Properties--->Progect Facets--->Java--->將其版本改為1.7及以上即可;
循環結構
順序結構的程序語句只能被執行一次。如果您想要同樣的操作執行多次,,就需要使用循環結構
java的循環主要有三種結構
while循環
do..while循環
for循環
while循環
while循環是最基本的循環,他的結構:
while(布爾表達式){
循環內容
}
只要表達式值為true就一直執行下去.先判斷條件在循環
do...while循環
對於 while 語句而言,如果不滿足條件,則不能進入循環。但有時候我們需要即使不滿足條件,也至少執行一次。
do…while 循環和 while 循環相似,不同的是,do…while 循環至少會執行一次。
do{
循環
}while(條件表達式)
註意:布爾表達式在循環體後面,也就是說沒檢測前就已經進行了一次循環的內容了.
for循環,
可以叫確定循環 是一種支持叠代的通用循環利用每次叠代後更新的計數器或類型變量來控制叠代次數.
一般有可以確定次數的循環使用for循環
for(初始化:布爾表達式:更新){
代碼
}
最先執行初始化步驟。可以聲明一種類型,但可初始化一個或多個循環控制變量,也可以是空語句。
然後,檢測布爾表達式的值。如果為 true,循環體被執行。如果為false,循環終止,開始執行循環體後面的語句。
執行一次循環後,更新循環控制變量。
再次檢測布爾表達式。循環執行上面的過程。
盡管java和c++一樣允許在for循環的個個部分放置任何表達式,但有不成文的規則,for語句中的3個部分應該對同一計數器變量進行初始化,檢測和更新
註意:循環中如果有兩個浮點數要格外的小心,例如:
for(double x=0:x!=10:i+=0.1).. 可能永遠不是結束,因為舍入誤差,可能得不到精準的值,因為二進制不發準確表示1/10,所以x不會等於10
在布爾表達式中定義的變量作只會用於整個for
for內部定義的變量,不能再外面使用,所以想要在for循環以外使用循環技術器的最終值就需要將聲明寫在for外面.
for循環可以用while循環進行重寫
中斷控制流程語句
break;
break 主要用在循環語句或者 switch 語句中,用來跳出整個語句塊。
break 跳出最裏層的循環,並且繼續執行該循環下面的語句。
continue:
continue 適用於任何循環控制結構中。作用是讓程序立刻跳轉到下一次循環的叠代。
在 for 循環中,continue 語句使程序立即跳轉到更新語句。
在 while 或者 do…while 循環中,程序立即跳轉到布爾表達式的判斷語句。
在多重循環體忠,最內層中有break,跳出當前循環
帶標記符的break
Mark_x: break 組合,關閉第x層以及這層包括的循環
例:Mark_1:for(int i=0;i<10;i++)
{
Mark_2:foe(int j=0;j<i;<j++)
break Mark_a;
}
第三天(下) 流程控制 if while swtich break continue