340 likes | 576 Views
Java Programming (Part 1) Introduction. 鄧姚文 http://w3.im.knu.edu.tw/~joseph/ joseph@im.knu.edu.tw. 內容大綱. Java 語言簡介 Java 程式基礎 一個簡單範例: Hello Java ! Java 程式基本結構 資料型態與變數 運算子與運算式 流程控制 編譯與執行 Java 程式 使用執行時 期參數的 Hello Java !. Java 語言簡介: Java 的由來. 1995 年發表 by Sun Microsystems
E N D
Java Programming (Part 1)Introduction 鄧姚文 http://w3.im.knu.edu.tw/~joseph/ joseph@im.knu.edu.tw
內容大綱 • Java 語言簡介 • Java 程式基礎 • 一個簡單範例:Hello Java ! • Java 程式基本結構 • 資料型態與變數 • 運算子與運算式 • 流程控制 • 編譯與執行 Java 程式 • 使用執行時期參數的 Hello Java !
Java 語言簡介:Java 的由來 • 1995 年發表 by Sun Microsystems • 原名 Oak,Project Green,目標消費性電子產品 • 作者 James Gosling • Java 最早的成功應用: • Java Applet:製作網頁上的動態效果 • JavaScript:Netscape, 處理網頁上的物件
Java 語言簡介:特性、優缺點 • 安全:受管制的 I/O、沒有 Pointer • 跨平台:Java 程式在虛擬機器(VM)上執行,任何環境只要實作虛擬機器,就可以執行 Java 程式 • 簡單易學的物件導向語言 • API 眾多,提供各種資料結構,適用各種應用 • 穩定,良好的 Exception Handling 機制 • 多執行緒(Multithread) • 缺點:速度較慢,以 Java HotSpot 改善
Java 語言簡介:Java 的重要性 • Java 程式設計師的數量逐年暴增。 • 絕大部分的大專院校都有開 Java 課程,資訊相關科系將 Java 列為必修的程式語言。 • 美國的學院委員會(The College Board)決定進階教育資訊課程規劃會全部改版納入物件導向,並選用 Java 當作考試時使用的語言。
Java 語言簡介:Java 的版本 • J2SE (Standard Edition) • JDK 1.2 以後的版本,稱為 Java 2 • 一般程式製作、GUI、資料庫存取、網路介面、JavaBeans 、… • J2EE (Enterprise Edition) • N-Tier Applications、Web Applications、… • J2ME (Micro Edition) • PDA、手機、Smart Card、…
Java 語言簡介:Java 認證考試 • SCJP (Sun Certified Java Programmer) • 標準:60 題選擇答對 70% 以上 • SCJD (Sun Certified Java Developer) • 第一階段標準:程式設計題 • 第二階段標準:5-10 題簡答題答對 70% 以上 • SCAJ (Sun Certified Architect for J2EE) • 60 題複選簡答,答對 75% 以上 • SCWD (Sun Certified Web Component Developer) • 60 題複選簡答,答對 61% 以上
Java 程式基礎 • 一個簡單範例:Hello Java ! • Java 程式基本結構 • 資料型態與變數 • 運算子與運算式 • 流程控制 • 編譯與執行 Java 程式 • 使用執行時期參數的 Hello Java !
一個簡單範例:Hello Java ! • Compile the program: • javac Hello.java • Run the program: • java Hello public class Hello { public static void main(String[] args) { System.out.println("Hello Java !"); } }
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 而不是檔案名稱。
資料型態與變數:基本資料型態 • 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.
資料型態與變數:變數 • 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
資料型態與變數:常數(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.14; • final double PI = 3.14F; • final double PI = 314e-2; • final String LANGUAGE = “Java”;
運算子與運算式:運算子 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: =, *=, /=, %=, +=, -=, <<=, >>=, >>>=, &=, ^=, |=
運算子與運算式:運算式 • int i = 10; • i <<= 2; • boolean hitTop = false; • String baseName = null; • i++; • abs = (a > 0) ? a : -a;
流程控制:if-then-else if (a > b) { // A } else { // B } // C if (a > b) { // A } // C
public class EvenOdd { public static void main(String[] args) { if (args.length != 1) { System.err.println("Parameter required."); System.exit(1); } int i = Integer.parseInt(args[0]); String msg = (i % 2 == 0) ? "EVEN" : "ODD"; System.out.println("" + i + " is an " + msg + " number."); } }
流程控制:nested if-then-else, switch 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 }
流程控制:while 迴圈 while (A) { // B } do { // B } while (A);
流程控制:for 迴圈 for (A; B; C) { // D } for (int i = 0; i < names.length; i++) { System.out.println("Hello "+names[i]); }
流程控制:break 和 continue for (..;..;..) { ... if (...) { break; } ... if (...) { continue; } ... }
Java Source Java Bytecode Compiler JRE Hello.java javac Hello.class java 編譯與執行 Java 程式 • To compile • javac Hello.java • To run • java Hello • javaw Hello
JDK JRE JVM 編譯與執行 Java 程式:執行環境
使用執行時期參數的Hello Java ! public class Hello2 { public Hello2(String[] names) { for (int i = 0; i < names.length; i++) { System.out.println("Hello "+names[i]+" !"); } } public static void main(String[] args) { Hello2 h = new Hello2(args); } }
Exercise • 設計一個 Java 程式,計算並印出從 1 到 10 累加的結果,例如:1+2+3+4+5+6+7+8+9+10=55 • 設計一個 Java 程式,計算並印出從 1 到 n 累加的結果,其中 n 是一個從命令列讀入的參數。
Java Applet • Application Let • 在網頁環境中執行的小應用程式 Applet JVM 瀏覽器
HelloApplet.java import java.applet.Applet; import java.awt.*; public class HelloApplet extends Applet { public void paint(Graphics g) { g.drawString("Hello Applet !!", 50, 50); } }
hello_applet.html <HTML> <HEAD><TITLE>Title</TITLE></HEAD> <BODY> <APPLET CODE="HelloApplet" HEIGHT="200" WIDTH="200"> This browser does not appear to support Applets. </APPLET> </BODY> </HTML>
Applet 傳參數 <HTML><HEAD><TITLE>Applet 傳參數</TITLE></HEAD> <BODY> <APPLET CODE="HelloApplet2" HEIGHT="200" WIDTH="200"> <PARAM NAME="name" VALUE="鄧姚文"></APPLET> </BODY> </HTML>
HelloApplet2.java import javax.swing.*; import java.awt.*; public class HelloApplet2 extends JApplet { private String name = null; public void paint(Graphics g) { g.drawString(name + " 您好!", 100, 100); } public void init() { this.name = this.getParameter("name"); } }
簡易UI • Javax.swing.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(); } } JOptionPane
從 console 讀取 BufferedReader con = new BufferedReader( new InputStreamReader(System.in)); String s = con.readLine();