Java基礎之方法與流程控制
1.方法
定義一個方法的格式:
//方法名稱的命名規則和變數一樣,使用小駝峰 public static void 方法名稱() { 方法體 } // 例項 public class Demo11Method { public static void main (String[] args) { famer(); saler(); cook(); me(); } public static void me() { // 我 System.out.println("吃"); }View Codepublic static void cook() { // 小商販 // 廚子 System.out.println("洗菜"); System.out.println("切菜"); System.out.println("炒菜"); System.out.println("裝盤"); } public static void saler() { // 小商販 System.out.println("運輸到農貿i市場"); System.out.println("抬高價格"); System.out.println("賣給廚子"); } public static void famer() { // 農民 System.out.println("播種"); System.out.println("澆水"); System.out.println("施肥"); System.out.println("除蟲"); System.out.println("收割"); System.out.println("賣給小商販"); } }
注意事項:
-
方法定義的先後順序無所謂
-
方法的定義不能產生巢狀包含關係
-
方法定義好了之後不會執行,需要進行呼叫
補充注意:
對於byte/short/char三種類型來說,如果右側賦值的數值沒有超過範圍,那麼javac編譯器將會自動隱含的為我們補上一個(byte)(short)(char)
-
如果沒有超過左側的範圍,編譯器補上強轉
-
如果右側超過了範圍,那麼直接編譯報錯
再給變數賦值的時候,如果右側的表示式當中全部都是常量的時候,沒有任何的變數,那麼編譯器javac將會直接將若干個常量表達式計算得到結果。但是注意:如果表示式中有變數參與,那麼就不能進行這種優化了
方法其他注意事項:
1.方法應該定義在類當中,但是不能定義在方法中,不能巢狀
2.方法定義前後的順序無所謂
3.方法定義之後不會執行,如果希望執行,需要呼叫:單獨呼叫、列印呼叫、賦值呼叫
4.如果方法有返回值,那麼必須寫上:return 返回值,不能沒有
5.return後面的返回值資料,必須和方法的返回值型別對應起來
6.對於一個void沒有返回值的方法,不能寫return後面的返回值,只能寫return自己
7.對於方法中的最後一行的return可以省略不寫
8.一個方法當中可以有多個return語句,但是必須保證同時只有一個會被執行到
方法過載
方法過載(overload):多個方法的名稱一樣,但是引數列表不能一樣
優點:只需要記住一個唯一的方法名稱,就可以實現類似的多個功能
方法過載與下列因素相關:
-
引數個數不同
-
引數型別不同
-
引數的多型別順序不同
方法過載與下列方法無關:
-
不能根據引數的名字進行過載,與引數的名稱無關
-
與方法的返回值無關
package com.dcits.day02.demo04; public class Demo01MethodOverload { public static void main(String[] args) { System.out.println(sum(1,3,4)); } public static int sum(int a,int b) { System.out.println("有兩個引數的方法執行"); return a + b; } public static int sum(int a,int b,int c) { System.out.println("有三個引數的方法執行"); return a + b + c; } public static int sum(int a,int b,int c,int d) { System.out.println("有四個引數的方法執行"); return a + b +c + d; } }
2.流程控制
2.1 判斷語句
單if語句
public class Demo02If { public static void main (String[] args) { System.out.println("今天天氣不錯,去網咖"); int age = 16; if (age >= 18) { System.out.println("LOL"); } System.out.println("回家吃飯"); } }
標準的if——else語句
public class Demo02If { public static void main (String[] args) { int age = 16; if (age % 2 == 0) { System.out.println("偶數"); } else { System.out.println("奇數"); } } }
if—else,if—else
public class Demo02If { public static void main (String[] args) { int x = 10; int y ; if (x >= 3) { y = 2*x + 1; }else if (-1 < x && x < 3) { y = 2 * x; } else { y = 2*x - 1; } System.out.println("結果是" + y); } }
使用三元運算子和標準的if-else語句分別實現:去兩個數中的最大值
// 三元運算 public class Demo02If { public static void main (String[] args) { int a = 10; int b = 20; int result = a > b ? a : b; System.out.println(result); } } // if表示式 public class Demo02If { public static void main (String[] args) { int a = 10; int b = 20; int result; if (a > b) { result = a; }else { result = b; } System.out.println(result); } }
switch語句
多個case後面的數值不能重複
switch後面小括號中只能是以下資料型別:
-
基本資料型別:byte、short、char、int
-
引用資料型別:String字串、enum列舉
switch語句可以很靈活:前後順序可以顛倒,而且break語句也可以省略。匹配哪一個case就從哪一個位置向下執行,直到遇到了break會哦這整體結束為止
public class Demo02If { public static void main (String[] args) { int num = 5; switch (num) { case 1: System.out.println("星期一"); break; case 2: System.out.println("星期二"); break; case 3: System.out.println("星期三"); break; case 4: System.out.println("星期四"); break; case 5: System.out.println("星期五"); break; case 6: System.out.println("星期六"); break; case 7: System.out.println("星期日"); break; default: System.out.println("資料不合理"); break; } } }
2.2 迴圈語句
for迴圈
for (初始化表示式; 布林表示式; 步進表示式) { 迴圈體 } public class Demo09For { public static void main (String[] args) { for (int i = 1;i<=100;i++) { System.out.println("我錯啦!" + i); } System.out.println("程式停止"); } }
while迴圈
public class Demo09For { public static void main (String[] args) { int i = 1; while (i <= 10) { System.out.println("我錯啦" + i); i++; } System.out.println("程式停止"); } }
do..while迴圈
public class Demo09For { public static void main (String[] args) { int i = 1; do { System.out.println("我錯啦" + i); i ++; } while (i<=10); System.out.println("程式停止"); } }
三種迴圈的區別
1.如果條件判斷從來就沒有滿足過,那麼for迴圈和while迴圈將會執行0次,但是do while迴圈至少會執行一次
2.for迴圈的變數在小括號中定義,只有在迴圈內部才可以使用
2.3 條件控制語句
break
1.可以在switch語句中,一旦執行,整個switch語句立刻結束
2.還可以用在迴圈語句當中,一旦執行,整個迴圈語句立刻結束,打斷迴圈
public class Demo09For { public static void main (String[] args) { int sum = 0; for (int i = 1;i <=100; i++) { if (i == 10) { break; } } System.out.println(sum); } }
continue
public class Demo09For { public static void main (String[] args) { int sum = 0; for (int i = 1;i <=10; i++) { if (i == 4) { continue; } System.out.println(i + "層到了"); } } }
死迴圈
public class Demo09For { public static void main (String[] args) { while (true) { System.out.println("I love Java!"); } } }
迴圈的巢狀
public class Demo09For { public static void main (String[] args) { for (int hour = 0; hour < 24; hour++) { for (int minute = 0;minute <60; minute ++){ System.out.println(hour + "點" + minute + "分"); } } } }