1. 程式人生 > 實用技巧 >Java基礎之方法與流程控制

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("吃");
    }
    
public 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("賣給小商販"); } }
View Code

注意事項:

  • 方法定義的先後順序無所謂

  • 方法的定義不能產生巢狀包含關係

  • 方法定義好了之後不會執行,需要進行呼叫

補充注意:

對於byte/short/char三種類型來說,如果右側賦值的數值沒有超過範圍,那麼javac編譯器將會自動隱含的為我們補上一個(byte)(short)(char)

  • 如果沒有超過左側的範圍,編譯器補上強轉

  • 如果右側超過了範圍,那麼直接編譯報錯

再給變數賦值的時候,如果右側的表示式當中全部都是常量的時候,沒有任何的變數,那麼編譯器javac將會直接將若干個常量表達式計算得到結果。但是注意:如果表示式中有變數參與,那麼就不能進行這種優化了

方法其他注意事項:

1.方法應該定義在類當中,但是不能定義在方法中,不能巢狀

2.方法定義前後的順序無所謂

3.方法定義之後不會執行,如果希望執行,需要呼叫:單獨呼叫、列印呼叫、賦值呼叫

4.如果方法有返回值,那麼必須寫上:return 返回值,不能沒有

5.return後面的返回值資料,必須和方法的返回值型別對應起來

6.對於一個void沒有返回值的方法,不能寫return後面的返回值,只能寫return自己

7.對於方法中的最後一行的return可以省略不寫

8.一個方法當中可以有多個return語句,但是必須保證同時只有一個會被執行到

方法過載

方法過載(overload):多個方法的名稱一樣,但是引數列表不能一樣

優點:只需要記住一個唯一的方法名稱,就可以實現類似的多個功能

方法過載與下列因素相關:

  1. 引數個數不同

  2. 引數型別不同

  3. 引數的多型別順序不同

方法過載與下列方法無關:

  1. 不能根據引數的名字進行過載,與引數的名稱無關

  2. 與方法的返回值無關

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 + "分");
            }
        }   
    }
}