閱讀目錄:算法
1.程序流程控制spa
順序結構code
判斷結構blog
選擇結構生命週期
循環結構內存
程序流程控制:就是程序運行時候的控制。it
class Demo2 { public static void main(String[] args) { System.out.println('hello world1') System.out.println('hello world2') System.out.println('hello world3') System.out.println('hello world4') } }
格式1:for循環
class Demo3 { public static void main(String[] args) { /* if 語句的第一種格式: (1) if (條件表達式) //要麼真,要麼假 { 執行語句; } 例子: int x = 3; if (x>1) { System.out.pritln("yes"); } System.out.println("over"); */ } }
格式2:class
class Demo4 { public static void main(String[] args) { /* if 語句的第二種格式: (1) if (條件表達式) //要麼真,要麼假 { 執行語句; } else { 執行語句; } System.out.println("hello world"); 例子: int x = 3; if (x>1) { System.out.pritln("yes"); } else { System.out.pritln("no"); } System.out.println("over"); if (a>1) b=100; else b=200; b = a>1?100:200; //三元運算符就是if else 語句簡寫格式。 簡寫格式何時使用? 當if else 運算後有一個具體的結果時,能夠簡化寫成三元運算符。 */ } }
格式3:效率
class Demo4 { public static void main(String[] args) { /* if 語句的第二種格式: (1) if (條件表達式) //要麼真,要麼假 { 執行語句; } else if (條件表達式) //若是前面爲True,就不執行。 { 執行語句; } else // 若是前面有一個爲True,都不執行。 { 執行語句; } System.out.println("hello world"); 例子: int x = 3; if (x>1) { System.out.pritln("a"); } else if (x>2) { System.out.pritln("b"); } else if (x>3) { System.out.println("c"); } else { System.out.println("d"); } System.out.println("hello world") */ } }
局部代碼塊:
class Demo4 { public static void main(String[] args) { { // 局部代碼塊能夠定義局部變量的生命週期 int a = 3; System.out.rpintln(a+4); } } }
練習:
class Demo5 { public static void main(String[] args) { /* 需求:根據用戶指定的具體數據,判斷該數據對應的星期。 1-星期一Monday 思路: 用戶輸入沒法獲取,可是那只是具體數據的一種獲取手段並且。 而咱們要作的功能僅僅是對用戶指定的數據進行對應星期的打印並且。 因此具體的數據不肯定,徹底可使用變量來表示。 咱們只要對變量進行操做便可,至於變量的值,能夠由用戶決定。 由於數據的不肯定性,因此要對數據進行判斷。 使用if語句 */ if week; if(week==1) System.out.println(week+"對應中文星期一") else if(week==2) System.out.println(week+"對應中文星期二") else if(week==3) System.out.println(week+"對應中文星期三") else if(week==4) System.out.println(week+"對應中文星期四") else if(week==5) System.out.println(week+"對應中文星期五") else if(week==6) System.out.println(week+"對應中文星期六") else if(week==7) System.out.println(week+"對應中文星期日") else System.out.println(week+"沒有對應的星期") } }
class Demo6 { public static void main(String[] args) { /* 一年四季: 春:3,4,5 夏:6,7,8 秋:9,10,11 冬:12,1,2 根據用戶輸入的月份,給出對應的季節。 */ int month; if (month==3 || month==4 || month==5) System.out.println(month+"月是春季"); else if(month==6 || month==7 || month==8) System.out.println(month+"月是夏季"); else if(month==9 || month==10 || month==11) System.out.println(month+"月是秋季"); else if(month==12 || month==1 || month==2) System.out.println(month+"月是冬季"); else: System.out.println(month+"月沒有對應的季節"); int month = 13; if(month<1 || month>12) System.out.println(month+"月沒有對應的季節"); else if(month>=3 & month<=5) System.out.println(month+"月是春季") else if(month>=6 & month<=8) System.out.println(month+"月是夏季") else if(month>=9 & month<=11) System.out.println(month+"月是秋季") else System.out.println(month+"月是冬季") } }
class SwitchDemo { public static void main(String[] args) { /* 選擇 switch(表達式) { case 取值1: 執行語句; break; case 取值2: 執行語句; break; ... default: 執行語句; break; } */ int x = 3 Switch(x) //byte,short,int,char. { case 4: System.out.println("a"); break; case 1: System.out.println("b"); break; case 3: System.out.println("c"); break; default: System.out.println("d"); break; } System.out.println('hello world') int a=4, b=2, char opr = '-'; switch(opr) { case '+': System.out.println(a+b); break; case '-': System.out.println(a-b); break; case '*': System.out.println(a*b); break; case '/': System.out.println(a/b); break; default: System.out.println('沒法運算,符號不支持'); break; } } }
練習:
class SwitchTest { public static void main(String[] args) { /* 需求:用戶輸入的數據對應出星期 */ int week = 1; switch(week): { case 1: System.out.println(week+"對應的是星期一"); break; case 2: System.out.println(week+"對應的是星期二"); break; case 3: System.out.println(week+"對應的是星期三"); break; case 4: System.out.println(week+"對應的是星期四"); break; case 5: System.out.println(week+"對應的是星期五"); break; case 6: System.out.println(week+"對應的是星期六"); break; case 7: System.out.println(week+"對應的是星期七"); break; default: System.opr.println('沒有對應的星期'); int month = 5; switch(month) { case 3: case 4: case 5: System.opr.println(month+"月對應的是春季"); break; case 6: case 7: case 8: System.opr.println(month+"月對應的是夏季"); break; case 9: case 10: case 11: System.opr.println(month+"月對應的是秋季"); break; case 12: case 1: case 2: System.opr.println(month+"月對應的是冬季"); break; default: System.opr.println('沒有對應的季節'); } } } }
小結:
判斷(if) 和 選擇(Switch) 的區別: if: 1.對具體的值進行判斷。 2.對區間判斷。 3.對運算結果是boolean類型的表達式進行判斷。 Switch: 1.對具體的值進行判斷。 2.值的個數一般是固定的。 對於幾個固定的值判斷,建議使用switch語句,由於switch語句會將具體的答案都加載進內存。 效率相對高一點。
循環結構: 表明語句: while、 do while、 for 1.while語句格式: while (條件表達式) { 執行語句; } 2.do while語句格式: do { 執行語句; }while(條件格式); do while 的特色: 是條件不管是否知足,循環體至少執行一次。
while:
class WhileDemo { public static void main(String [] args) { /* while(條件表達式) { 執行語句; } */ int x = 1; while (x<3) { System.out.println("x="+x); x++; } System.out.println('hello world') } }
練習:
class WhileTest { public static void main(String[] args) { /* 練習: 1.獲取1到10的數字之和。 0 + 1 1 + 2 3 + 3 6 + 4 10 + 5 思路: 1.每次參與加法的數值不肯定。 2.每次的出現的和數據也不肯定。 3.發現參與加法運算的數值有遞增規律 4.每一次都是加法運算在重複,而且都是和再加上下一個數值。 步驟: 1.定義一個變量,記錄住參與加法運算的數據。 2.定義一個變量,記錄中每一次的出現的和。 3.對於記錄參與加法運算的數據進行遞增。 4.由於加法運算須要重複,就要想到循環結構。 */ // 累加算法。 int x = 1; //記錄參與加法的數據 int sum = 0; //記錄住每一次的和 while(x<=10) { sum = sum + x; x++; } System.out.println("sum="+sum); } }
do while:
class DoWhileDemo { public static void main(String [] args) { /* do { 執行語句; }while(條件表達式); */ int x = 1; do { System.out.println("x="+x); x++; } while (x<3); System.out.println('hello world') /* do while 語句的特色:不管條件是否知足,循環體至少執行一次 */ int y = 1; while (y<1) { System.out.println("y="+y); x++; } } }
練習:
class WhileTest2 { public static void main(String[] args) { /* 練習: 1.1-100之間,6的倍數出現的次數。 要求:本身獨立完成思想的書寫,和步驟的文字描述。 1.定義一個變量,記住每次的數值。 2.定義一個變量,記住次數 */ //計數器思想 int x = 1; // 目標數 int count = 0; //次數 while(x <=100) { if(x%6==0) count++; x++; } System.out.println("count="+count) } }
For:
class ForDemo { public static void (String[] args) { /* for(初始化表達式;循環條件表達式;循環後的操做表達式) { 執行語句;(循環體) } 執行順序: 1.先執行初始化表達式 2.後執行循環條件表達式 3.執行語句 4.執行操做表達式 */ for(int x = 1; x<3; x++) { System.out.println("x="+x); } } }
練習:
class ForDemo { public static void(String[] args) { /* 用for完成累加。 */ int sum = 0; for(int x=1; x<=0; x++) { sum = sum + x; } System.out.println("sum="+sum) for 和 while 的特色: 1.for和while能夠互換。 2.格式上的不一樣,在使用上有點小區別。 若是須要經過變量來對循環進行控制,該變量只做爲循環增量存在時,區別就體現出來了、 //打印1-10十個數字 int x =1; while(x<5) { System.out.println("x="+x); x++; } System.out.println("x=="+x); //可執行 for(int y=1; y<5; y++) { System.out.println("y="+y); } System.out.println("y=="+y); //報錯 ,由於for循環,在循環裏結束時就釋放內存空間了。 } }
問題: 1.何時使用循環結構呢? 答:當對某些代碼執行不少次時,使用循環結構完成。 當對一個條件進行一次判斷時,可使用if語句。 當對一個條件進行屢次判斷時,可使用while語句。 注意: 1.在使用循環時,必定要明確哪些語句須要參與循環。 2.循環一般狀況下,須要定義條件,須要控制次數
For循環的嵌套:
//for循環的嵌套結構。(大圈套小圈思想,外面1圈,裏面4圈。) class ForForDemo { public static void main(String[] args) { for(int x=0; x<3; x++) { for(int y=0; y<4; y++;) { System.out.println("ok") } } } } 例子: class ForForDemo { public static void main(String[] args) { /* ***** ***** ***** ***** */ for(int x=0; x<4; x++) //有四行 { for(int y=0; y<5; y++;) //每一行有5個* { System.out.print("*") } System.out.println(); } } }
例子2:
class ForForDemo2 { public static void main(String[] args) { /* ***** **** *** ** * */ int z = 5; for(int x=1; x<=5; x++) //1-5,1-4,1-3 // 1-5,2-5,3-5 { for(int y=1; y<=z; y++;) //每一行有5個* { System.out.print("*") } System.out.println(); z--; } } } class ForForDemo2 { public static void main(String[] args) { /* ***** **** *** ** * */ int z = 1; for(int x=1; x<=5; x++) //1-5,1-4,1-3 尾變 // 1-5,2-5,3-5 頭變 { for(int y=z; y<=5; y++;) //每一行有5個* { System.out.print("*") } System.out.println(); z++; } } }
例子3:
class ForForDemo2 { public static void main(String[] args) { /* * ** *** **** ***** */ for(int x=1; x<=5; x++) { for(int y=1; y<=x; y++;) { System.out.print("*") } System.out.println(); } } } class ForForDemo2 { public static void main(String[] args) { /* 54321 5432 543 54 5 */ for(int x=1; x<=5; x++) { for(int y=5; y>=x; y--;) { System.out.print("y") } System.out.println(); } } } class ForForDemo2 { public static void main(String[] args) { /* 1 22 333 4444 55555 */ for(int x=1; x<=5; x++) { for(int y=1; y<=x; y++;) { System.out.print("x") } System.out.println(); } } }
例子4:
class ForForDemo3 { public static void main(String[] args) { /* 九九乘法表 1*1=1 1*2=2 2*2=4 1*3=3 2*3=6 3*3=9 \n : 回車 \t :製表符 \b : 退格 \r :按下回車鍵 */ for(int x=1; x<=9; x++) { for(int y=1; y<=x; y++;) { System.out.print(y+"*"+x+"="+y*x+"") } System.out.println(); } } }
例子5:
class ForForDemo4 { public static void main(String[] args) { /* * * * * * -* * * * --* * * ---* * ----* */ for(int x=1; x<=5; x++) { for(int y=1;y<x; y++) { System.out.print(" ") } for(int z=x; z<=5; z++) { System.out.print("* ") } System.out.println(); } } }
break&continue
其餘流程控制語句: 1.break(跳出) , continue(繼續) break語句: 應用範圍:選擇結構和循環結構 continue語句: 應用於循環結構 注意: a.這兩個語句離開應用範圍,存在是沒有意義的。 b.這兩個語句單獨存在下面都不能夠有語句,由於執行不到。 c.continue 語句是結束本次循環繼續下次循環。 d. 標號的出現,可讓這兩個語句做用於指定的範圍。
例子:
class BreakContinueDemo01 { public static void main(String[] args) { /* break:跳出 break做用的範圍,要麼是switch,要麼是循環語句。 */ for(int x=0; x<3; x++) { System.out.println("x="+x); break; } } } class BreakContinueDemo02 { public static void main(String[] args) { /* break:跳出 break做用的範圍,要麼是switch,要麼是循環語句。 break跳出所在的當前循環。 若是出現嵌套循環,break想要跳出指定的循環,能夠經過標號來完成。 */ asd:for(int x=0; x<3; x++) { zxc:for (int y=0; y<4; y++) { System.out.println("x="+x); break asd; } } } } class BreakContinueDemo03 { public static void main(String[] args) { /* continue:繼續 做用的範圍:循環結構 continue: 結束本次循環,繼續下次循環 若是continue單獨存在時,下面不要有任何語句,由於執行不到。 for (int x=0; x<11; x++) { if(x%2==0) continue; System.out.println("x="+x); } */ asd:for(int x=0; x<3; x++) { zxc:for (int y=0; y<4; y++) { System.out.println("x="+x); continue asd; } } } }