第二天:方法
阿新 • • 發佈:2020-10-18
方法
1 定義方法
-
定義一個方法的格式
public static void 方法名稱(){ 方法體 }
-
方法名稱的命名規則和變數一樣,使用小駝峰
-
方法體:也就是大括號當中可以包含任意條語句
-
呼叫方法格式:
方法名稱();
注意事項
- 方法定義的先後順序無所謂
- 方法的定義不能產生巢狀包含關係
- 方法定義好之後,不會執行的,如果想執行,一定進行方法的呼叫【呼叫】
方法例項
public class Demo11Method { public static void main(String[] args) { farmer(); // 呼叫農名伯伯的方法 seller(); cook(); me(); } public static void farmer() { // 農民伯伯 System.out.println("播種"); System.out.println("澆水"); System.out.println("施肥"); System.out.println("除蟲"); System.out.println("收割"); System.out.println("賣給小商販"); } public static void seller() { // 小商販 System.out.println("運輸到農貿市場"); System.out.println("抬高價格"); System.out.println("吆喝"); } public static void cook() { // 廚子 System.out.println("賣給廚子"); System.out.println("洗菜"); System.out.println("切菜"); System.out.println("炒菜"); System.out.println("裝盤"); } public static void me() { // 我 System.out.println("吃"); } }
2 byte/short/char
- 對於byte/short/char 三種類型來說,如果右側賦值的資料沒有超出範圍,那麼javac編譯將會自動隱含的為我們補上一個(byte)(short)(char)
- 如果沒有超出左側的範圍,編譯器補上強轉
- 如果右側超出左側範圍,那麼直接編譯器報錯
例項
public class Demo12Notice { public static void main(String[] args) { // 右側確實是一個int數字,但是沒有超過左側的範圍,就是正確的 // int --> byte,不是自動型別轉換 byte num1 = 30; // 將右側沒有超過左側的範圍 System.out.println(num1); // 30 // byte num2 = 128; // 右側超過左側的範圍 // int --> char,沒有超過範圍 // 編譯器會自動補上一個隱含的(char) char zifu = 65; System.out.println(zifu); // A } }
3 編譯器的常量優化
- 在給變數進行賦值運算的時候,如果右側的表示式當中全都是常量,沒有任何變數
- 那麼編譯器 javac 將會直接將若干個常量表達式計算得到結果
- short result = 5 + 8; // 等號右邊全都是常量,沒有任何變數參與運算
- 編譯之後,得到的.class位元組碼檔案當中相當於:short result = 13;
- 右側的常量結果數值,沒有超出左側範圍,所以正確
注意事項
- 這稱為"編譯器的常量優化"
- 但是注意:一旦表示式當中有變數參與,那麼就不能進行這種優化了
例項
public class Demo13Notice { public static void main(String[] args) { short num1 = 10; // 正確寫法 short a = 5; short b = 8; // short + short --> int + int --> int // short result = a + b; // 錯誤寫法!左側需要的是int型別 // 右側不用變數,而是採用常量,而且只有兩個常量,沒有別人 short result = 5 + 8; System.out.println(result); // 13 } }