1 / 47

JAVA 基本語法

JAVA 基本語法. 鄧姚文 http://www.ywdeng.idv.tw joseph.deng@gmail.com. 內容大綱. Java 語言簡介 Java 程式基礎 一個簡單範例: Hello Java ! Java 程式基本結構 資料型態與變數 運算子與運算式 流程控制 編譯與執行 Java 程式 使用執行時期參數的 Hello Java !. Java 語言簡介: Java 的版本. JAVA SE ( Java Platform, Standard Edition )

Download Presentation

JAVA 基本語法

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. JAVA 基本語法 鄧姚文 http://www.ywdeng.idv.tw joseph.deng@gmail.com

  2. 內容大綱 • Java 語言簡介 • Java 程式基礎 • 一個簡單範例:Hello Java ! • Java 程式基本結構 • 資料型態與變數 • 運算子與運算式 • 流程控制 • 編譯與執行 Java 程式 • 使用執行時期參數的 Hello Java !

  3. Java 語言簡介:Java 的版本 • JAVA SE(Java Platform, Standard Edition) • 桌面應用程式、GUI、資料庫、網路、… • JAVA EE(Java Platform, Enterprise Edition) • N-Tier Applications、Web Applications、… • JAVA ME(Java Platform, Micro Edition) • PDA、手機、Smart Card、…

  4. Java Platform Edition 摘自http://thisjava.blogsome.com/2005/03/28/java-technology/

  5. Java 程式基礎 一個簡單範例:Hello Java ! Java 程式基本結構 資料型態與變數 運算子與運算式 流程控制 編譯與執行 Java 程式 使用執行時期參數的 Hello Java !

  6. 一個簡單範例:Hello Java ! public class Hello { public static void main(String[] args) { System.out.println("Hello Java !"); } }

  7. Java 程式基本結構 • 每一支程式就是一個類別(Class) • Source file 的名字一定要跟 Class 的名字相同,大小寫也一定要一樣,副檔名為 .java。 • public static void main(String[] args) 為程式的進入點 • main method 一定要宣告成 public static void,因為它一定要能夠被外部的 class loader 存取,而且要在一開始就存在,而且不能夠有傳回值。 • System 是系統物件,out 指 stdout,println 印完之後會換行。 • JRE class loader 需要的是 class name 而不是檔案名稱。

  8. 指令補充 • CD 更換目錄(Change Directory) • CD C:\ • DIR 列出目錄內容(Directory) • javac 執行 JAVA 編譯器(Java Compiler) • javac Hello.java • java 執行 JAVA • java Hello

  9. Java Source Java Bytecode Compiler JRE Hello.java javac Hello.class java 編譯與執行 Java 程式 • To compile • javac Hello.java • To run • java Hello • javaw Hello (GUI 版)

  10. JAVA 程式的編譯與執行

  11. JDK JRE JVM 編譯與執行 Java 程式:執行環境

  12. JAVA 執行環境架構

  13. 資料型態與變數:基本資料型態 boolean: The value is true or false. 布林 char: 16-bit Unicode. 統一碼字元 byte: 8-bit signed integer. 有號整數 short: 16-bit signed integer. int: 32-bit signed integer. long: 64-bit signed integer. float: 32-bit signed floating point number. 浮點數 double: 64-bit signed floating point number.

  14. Wrapper Classes包裝類別 • Character • 用於包裝字元 char • Integer, Short, Byte and Long • 用於包裝整數 int, short, byte, long • Float and Double • 用於包裝浮點數 float, double

  15. Scalar V.S. Object 123 是 Literal(常數值) int n = 123; 是 Scalar(純量) String s = "123"; 是字串物件 Integer n = new Integer(123); 是整數物件

  16. Scalar V.S. Object(續) • 數字才可以進行四則運算 • String s = "123"; • String z = s + s; // z 的值為 "123123" • double d = Double.parseDouble(s); • int i= Integer.parseInt(s); • double x = d + i; // x 的值為 123+123 = 246 • 物件才可以存入 Collection(集合)之中 • Vector v = new Vector(); • v.add(new Integer(123));

  17. Autoboxing 自動將純量包成物件 public class Boxing { public static void main(String[] args) { Integer i = new Integer(10); System.out.println(i.intValue() + 10); } } public class AutoBoxing { public static void main(String[] args) { Integer i = 10; System.out.println(i + 10); } }

  18. 資料型態與變數:變數 • TypeName variableName = INI_VALUE; • double mathScore = 75.5; • ClassName variableName = INI_VALUE; • String authorName = "Bill Day"; • ClassName varName = new ClassName(); // 建立物件 • Hashtable ht = new Hashtable(); • 命名慣例 • ClassName 類別名稱第一個字母大寫 • variableName 變數名稱第一個字母小寫(Camel Naming 駱駝命名法) • CONSTANT_NAME 常數名稱全部大寫

  19. 資料型態與變數:常數(Constant & Literal) final int PASS_SCORE = 60; final long LONG_ONE = 14L; final int HEX_MASK = 0x0e; final int OCT_MASK = 016; final float PI = 3.14F; final double PI = 3.14; final double PI = 314e-2; final String LANGUAGE = "Java";

  20. 邏輯判斷 • 比較大小 • > < >= <= • 相等、不相等 • == != • 而且(所有條件都必須成立才行) • && • 或者(只要有一個條件成立即可) • ||

  21. 數學運算 • 加減乘除 • + - * / • 整數除法取餘數 • % • 5 % 2 結果為 1

  22. 運算子與運算式:運算子&優先順序 15: L: ., [], (args), (post)++, (post)-- 14: R: ++(pre), --(pre), +(Positive), -(negative), ~, ! 13: R: new, (type) 12: L: *, /, % 11: L: +, - 10: L: <<, >>, >>> 9: L: <, <=, >, >=, instanceof 8: L: ==, != 7: L: & 6: L: ^ 5: L: | 4: L: && 3: L: || 2: R: ?: 1: R: =, *=, /=, %=, +=, -=, <<=, >>=, >>>=, &=, ^=, |=

  23. 運算子與運算式:運算式 int x = 5; x = x + 1; x <<= 2; boolean hitTop = false; String baseName = null; x++; abs = (a > 0) ? a : -a;

  24. 流程控制:if-then-else if (a > b) { // A } else { // B } // C if (a > b) { // A } // C

  25. public class EvenOdd { public static void main(String[] args) { if (args.length != 1) { System.err.println("請輸入一個正整數"); System.exit(1); } int i = Integer.parseInt(args[0]); String msg = (i % 2 == 0) ? "偶數" : "奇數"; System.out.println("" + i + " is an " + msg + " number."); } } args.length 為 args 陣列長度 Integer.parseInt() 將字串轉換成整數 == 比較兩值是否相等 % 整數除法取餘數 System.err 指 stderr:錯誤訊息輸出裝置

  26. 標準輸出入裝置 • 標準輸入裝置(stdin) • 預設為 Console(主控台) • 如果不做 Input Redirect(輸入重新導向)則為鍵盤(Keyboard) • 標準輸出裝置(stdout) • 預設為 Console(主控台) • 如果不做 Output Redirect(輸出重新導向)則為螢幕(tty) • 標準錯誤裝置(stderr) • 預設為 Console(主控台) • 不能夠 Output Redirect • 參考 http://en.wikipedia.org/wiki/Standard_streams

  27. 流程控制:nested if-else, switch-case if (a == 0) { // A } else { if (a == 1) { // B } else { if (a == 2) { // C } else { // D } } } if (a == 0) { // A } else if (a == 1) { // B } else if (a == 2) { // C } else { // D } switch (a) { case 0: // A break; case 1: // B break; case 2: // C break; default: // D } Nested 巢狀

  28. 練習 • 寫一個程式判斷成績是否及格 • 成績 >= 60 為及格 • 成績 <= 59 為不及格 • 成績 > 100 或 < 0 必須發出警訊 • 成績由命令列參數 String[] args 輸入 • 測試資料 • java Score 80 • java Score 123 • java Score 59

  29. 流程控制:while 和 do-while 迴圈 while (A) { // B } do { // B } while (A);

  30. 流程控制:for 迴圈 for (A; B; C) { // D } for (inti = 0; i < names.length; i++) { System.out.println("Hello "+names[i]); }

  31. 練習 • 步驟一: • 寫一個程式將命令列參數依序印出 • 測試資料 • java Echo 1 2 3 4印出:1 2 3 4 • 步驟二: • 將程式改成反序印出 • 測試資料 • java Echo 1 2 3 4印出:4 3 2 1

  32. 流程控制:break 和 continue for (..;..;..) { ... if (...) { break; } ... if (...) { continue; } ... } 立刻回頭 開始下一回合 立刻中斷迴圈

  33. 練習 • 寫一個程式將命令列參數之中的偶數依序印出 • 遇到負數時立即停止列印 • 只印出偶數,奇數忽略不印出 • 假設命令列參數只輸入正整數 • 0 是偶數 • 測試資料 • java Even 1 2 3 4印出:2 4 • java Even 2 3 0 -1 4 5印出:2 0

  34. 練習 • 設計一個 Java 程式,計算從命令列帶入的參數之總和與平均值 • 測試資料 • java Sum 1 2 3 4印出:總和為 10平均為 2.5

  35. 練習 設計一個 Java 程式,計算並印出從 1 到 10 累加的結果,例如:1+2+3+4+5+6+7+8+9+10=55 設計一個 Java 程式,計算並印出從 1 到 n 累加的結果,其中 n 是一個從命令列讀入的執行時期參數。

  36. 簡易UIJavax.swing.JOptionPane • showConfirmDialog • 要求確認, yes/no/cancel. • showInputDialog • 提示輸入 • showMessageDialog • 顯示訊息 • showOptionDialog • The Grand Unification of the above three.

  37. JOptionPane import javax.swing.*; public class Square { public Square(){ String s = JOptionPane.showInputDialog("請輸入一個整數"); int n = Integer.parseInt(s); int nn = n * n; JOptionPane.showMessageDialog(null, s + " 的平方為: " + nn, "計算平方數", JOptionPane.PLAIN_MESSAGE); } public static void main(String[] args){ Square square = new Square(); } }

  38. class ConfirmExit implements Application.ExitListener { public boolean canExit(EventObject e) { if (dctsdk.isServerOnLine()) { int option = JOptionPane.showConfirmDialog( getFrame(), "Do you really wants exit?", "Confirmation Required", JOptionPane.YES_NO_OPTION); if (option == JOptionPane.YES_OPTION) { dctsdk.stopServer(); } else { return false; } } return true; } public void willExit(EventObject e) { } } // ask for confirmation on exit getApplication().addExitListener(new ConfirmExit());

  39. Object[] possibleValues = { IDctSdk.KeyboardCaseOptions.ToUpper + " 全部大寫", IDctSdk.KeyboardCaseOptions.ToLower + " 全部小寫", IDctSdk.KeyboardCaseOptions.Intact + " 不轉換", IDctSdk.KeyboardCaseOptions.Inverse + " 大小寫互換" }; String selectedValue = (String) JOptionPane.showInputDialog(this.getFrame(), "請選擇鍵盤輸入英文字母之轉換方式", "英文字母轉換方式", JOptionPane.INFORMATION_MESSAGE, null, possibleValues, possibleValues[0]); String[] ss = selectedValue.split(" "); if (ss[0].equals(IDctSdk.KeyboardCaseOptions.ToUpper.toString())) { dctsdk.setKeyboardCase(IDctSdk.KeyboardCaseOptions.ToUpper.ordinal()); } else if (ss[0].equals(IDctSdk.KeyboardCaseOptions.ToLower.toString())) { dctsdk.setKeyboardCase(IDctSdk.KeyboardCaseOptions.ToLower.ordinal()); } else if (ss[0].equals(IDctSdk.KeyboardCaseOptions.Inverse.toString())) { dctsdk.setKeyboardCase(IDctSdk.KeyboardCaseOptions.Inverse.ordinal()); } else { dctsdk.setKeyboardCase(IDctSdk.KeyboardCaseOptions.Intact.ordinal()); } setStatusMessageKeyboardCase(dctsdk.getKeyboardCase());

  40. 以 BufferedReader 從 Console 讀取一行字串 BufferedReader con = new BufferedReader( new InputStreamReader(System.in)); String s = con.readLine(); int n = -1; try { n = Integer.parseInt(s); } catch (NumberFormatException ex) { ex. printStackTrace(); }

  41. 以 Scanner從 Console 讀取資料 Scanner sc = new Scanner(System.in); int i = sc.nextInt(); Scanner sc = new Scanner(new File("myNumbers")); while (sc.hasNextLong()) { long aLong = sc.nextLong(); } java.util.Scanner

  42. 練習 • 設計一個 Java 程式,計算並印出從 1 到 n 累加的結果,例如 n=10:1+2+3+4+5+6+7+8+9+10=55 • 輸入/輸出方式: • 以 JOptionPane 讀入 n 值,JOptionPane 輸出 • 提示 • 以 Integer.parseInt() 將字串轉成數字

  43. 練習 • 寫一個程式,作用為接受十進位整數,然後顯示其二進位、八進位與十六進位值。 • 提示 • Integer.toBinaryString(number); 二進位 • Integer.toOctalString(number); 八進位 • Integer.toHexString(number); 十六進位

  44. 練習 • 印出九九乘法表 • 以兩層迴圈實作 • 兩欄之間以 \t 分隔

More Related