一、順序結構
Java的基本結構就是順序結構湾盒,就是從頭到尾一句一句執(zhí)行的湿右,不用多說。
二历涝、選擇結構
1. 單分支結構
分支結構主要使用if語句來寫诅需,if里面的條件表達式的值必須為布爾類型,后面的if語句都一樣荧库。在單分支結構語句中堰塌,當條件為“真”時,執(zhí)行if里面的代碼分衫,當條件為“假”時场刑,不執(zhí)行if里面的代碼,而會執(zhí)行if后面的代碼蚪战。
單分支結構流程圖:
單分支一般結構:
if (condition){
Expression1;
}
Expression2;
例如用單分支結構返回兩個數的最大值:
public class Demo01 {
public static void main(String[] args) {
int a = 12;
int b = 5;
if(a>=b){
System.out.println(a); //print: 12
}
if(a<b){
System.out.println(b);
}
}
}
2. 雙分支結構
雙分支結構主要用if-else語句來寫牵现,在雙分支結構中,當條件為“真”時邀桑,執(zhí)行if后面的代碼瞎疼,當條件為“假”時,執(zhí)行else后面的代碼壁畸。
雙分支結構流程圖:
雙分支一般結構:
if (condition){
Expression1;
}else{
Expression2;
}
例如用雙分支結構返回兩個數的最大值:
public class Demo02 {
public static void main(String[] args) {
int a = 12;
int b = 5;
if (a>b){
System.out.println(a);
}else{
System.out.println(b);
}
}
}
3. 多分支結構
多分支結構主要用if-else if-else語句來寫贼急,在多分支結構中茅茂,當前面的條件為“真”時,將不會判斷后面的條件太抓,當前面的條件為“假”時空闲,會繼續(xù)判斷后面的條件,直到符合條件為止走敌。
多分支結構流程圖:
多分支一般結構:
if (condition1){
Expression1;
}else if(condition2){
Expression2;
...
}else if(conditionN){
Expression N;
}else{
Expression N+1;
}
例如求學生成績等級碴倾,60分以下的為D,6070分的為C掉丽,7090分的為B跌榔,90分以上的為A,用多分支語句實現(xiàn)如下:
public class Demo03 {
public static void main(String[] args) {
int grade = 75;
if(grade < 60){
System.out.println("D");
}else if(grade < 70){
System.out.println("C");
}else if(grade < 90){
System.out.println("B");
}else{
System.out.println("A");
}
}
}
分析:因為在多分支語句中机打,當布爾語句滿足前面的條件時矫户,會執(zhí)行前面的語句,盡管布爾語句同時也滿足后面的條件残邀,但不會執(zhí)行后面的語句。
4. 多值選擇結構
多值選擇結構的主要用switch-case-default語句來寫柑蛇,在多值選擇結構中芥挣,switch中表達式的值必須與case后面的值類型一致,并且只能是整數或枚舉類型值耻台。當表達式的值與某個case后面的值相等時空免,則執(zhí)行這個case后面的語句,如果表達式的值與所有case后面的值都不相等盆耽,則執(zhí)行default后面的語句蹋砚。語句中的break用于結束多值選擇結構語句,如果沒有break則會從滿足條件的case開始執(zhí)行完整個switch語句摄杂。
多值選擇結構流程圖:
多值選擇一般結構:
switch(expression){
case value1:
expression1;
break;
case value2:
expression2;
break;
...
case valueN:
expression N;
break;
default:
default_expression;
}
例如求學生成績等級坝咐,60分以下的為D,6070分的為C析恢,7090分的為B墨坚,90分以上的為A,用多值選擇結構語句實現(xiàn)如下:
public class Demo04 {
public static void main(String[] args) {
int grade = 75;
switch(grade/10){
case 10:
case 9:
System.out.println("A");break;
case 8:
case 7:
System.out.println("B");break;
case 6:
System.out.println("C");break;
default:
System.out.println("D");
}
}
}
分析:利用整除的方式映挂,靈活使用break來實現(xiàn)分段處理數據泽篮。
三、循環(huán)結構
1. while
執(zhí)行while循環(huán)結構語句的時候柑船,先判斷while后面的條件是否為“真”帽撑,如果為“真”的話,就會一直執(zhí)行循環(huán)體鞍时,當while條件為“假”時停止亏拉。如果條件一直為“真”历恐,循環(huán)體中又沒有結束循環(huán)的語句時,則會陷入死循環(huán)专筷。
while結構流程圖:
while一般結構:
while(condition){
loop expression;
}
例如利用while循環(huán)計算1+2+3+...+100的值:
public class Demo05 {
public static void main(String[] args) {
int s = 0;
int i = 1;
while(i<=100){
s+=i++;
}
System.out.println(s);
}
}
2. do-while
執(zhí)行do-while循環(huán)結構語句的時候弱贼,先執(zhí)行一循環(huán)體,然后再判斷while后面的條件是否為“真”磷蛹,如果為“真”的話吮旅,則一直執(zhí)行循環(huán)體直到while條件為假時停止。所以不管循環(huán)條件是否滿足味咳,循環(huán)體都會執(zhí)行一遍庇勃。同樣,如果條件一直為“真”槽驶,循環(huán)體中又沒有結束循環(huán)的語句時责嚷,則會陷入死循環(huán)。
do-while結構流程圖:
do-while一般結構:
do{
loop expression;
}while(condition);
例如利用do-while循環(huán)計算1+2+3+...+100的值:
public class Demo06 {
public static void main(String[] args) {
int s = 0;
int i = 1;
do{
s+=i++;
}while(i<=100);
System.out.println(s);
}
}
3. for
for循環(huán)語句是支持迭代的一種通用結構掂铐,是最有效罕拂、靈活的循環(huán)結構,在for循環(huán)中全陨,初始化部分可以設置循環(huán)變量的初值爆班,條件判斷部分為任意布爾表達式,迭代因子(步進)表達式可以控制循環(huán)變量的增減辱姨。
for循環(huán)結構流程圖:
for循環(huán)一般結構:
for(initialization; condition; expression){
expression 1;
}
例如利用for循環(huán)計算1+2+3+...+100的值:
public class Demo07 {
public static void main(String[] args) {
int s = 0;
for(int i=1; i<=100; i++){
s+=i;
}
System.out.println(s); //print: 5050
}
}
4. for-each
for-each語句是增強for循環(huán)語句柿菩,在數組或容器中,如果我們只是對內容進行處理雨涛,比如遍歷枢舶,而對下標沒有什么要求的時候,可以考慮使用增強for循環(huán)替久。
比如用foreach遍歷一個數組:
public class Demo08 {
public static void main(String[] args) {
int[] a = {1,2,3,4,5};
for (int i : a) {
System.out.print(i + " ");
}
}
}
//print: 1 2 3 4 5
在迭代輸出數組或容器的元素的時候凉泄,foreach語句是個不錯的選擇。