54
第第第第第第 Java 第第 (1) Java 第第第第第第第第 第第第 Jason Ko Jason 第 Android 第第第第第第第第第

第二堂 學習 Java 語法 (1) Java 歷史與程序開發

  • Upload
    -

  • View
    470

  • Download
    4

Embed Size (px)

Citation preview

Page 1: 第二堂 學習 Java 語法 (1) Java 歷史與程序開發

第二堂:學習的 Java 語法 (1)

Java 的歷史與程序開發柯力中 Jason Ko

Jason 的 Android 快樂應用程式學習班

Page 2: 第二堂 學習 Java 語法 (1) Java 歷史與程序開發

• Java 介紹

• 安裝 Eclipse 與 執行 Java 程式

• Java 的程式結構

• 變數與運算子

• 流程控制

• 變數的修飾子

課程內容

Page 3: 第二堂 學習 Java 語法 (1) Java 歷史與程序開發

Java 介紹

Jason 的 Android 快樂應用程式學習班

Page 4: 第二堂 學習 Java 語法 (1) Java 歷史與程序開發

什麼是電腦 ( 程式 ) 語言 ?

• 就像人溝通會用不同的語言 , 跟電腦溝通需要使用電腦語言

Jason 的 Android 快樂應用程式學習班

用我聽得懂的話跟我說!

Page 5: 第二堂 學習 Java 語法 (1) Java 歷史與程序開發

電腦語言有高低階之分

高階語言 編譯器 機器碼 執行

• 電腦只聽得懂 0 與 1 的二維碼 , 但人無法只用 0 與 1 溝通 . 為了讓寫程式更像人在說話 , 我們發明了高階語言與編譯器 .

如果衣服打 5折 , 我就買 2

件 讓我來翻譯

(compiler)

01010001…..

Page 6: 第二堂 學習 Java 語法 (1) Java 歷史與程序開發

為什麼要用 JAVA• 因為 Java 可以多平台執行 , 且設計方式為

物件導向 , 簡單說就是易學且通用

很多人說我易學難精 ! 泣 ~

我很友善的 ~ 我可以在任何平台執行 , 只要先安

裝 JVM

Page 7: 第二堂 學習 Java 語法 (1) Java 歷史與程序開發

• JVM 是 Java Virtual Machine 的簡稱 , 就是 Jave 虛擬機 , 它能夠理解 Java 編譯器編譯過的程式碼

什麼是 JVM

.java 編譯器 JVM 執行.class

程式碼

Page 8: 第二堂 學習 Java 語法 (1) Java 歷史與程序開發

再複習一下

.java 編譯器 JVM 執行.class

高階語言 編譯器 機器碼 執行

(compiler)

(.class 不是機器碼 )

Page 9: 第二堂 學習 Java 語法 (1) Java 歷史與程序開發

結論 : 寫好 Java, 其他的事就讓 compiler 跟 JVM 處理 !

Jason 的 Android 快樂應用程式學習班

Page 10: 第二堂 學習 Java 語法 (1) Java 歷史與程序開發

Java 簡介 ( 不用記 )

• Java 誕生於 1995 年

• 最多工程師使用的語言

• 特色為物件導向 , 跨平台 , 泛型設計

• Android 使用 Java 語言開發 , 然後再編譯成 .dex 檔給機器使用

Jason 的 Android 快樂應用程式學習班

我很 Young! 我很紅 !

Page 11: 第二堂 學習 Java 語法 (1) Java 歷史與程序開發

猜猜看這程式碼寫啥 !

Page 12: 第二堂 學習 Java 語法 (1) Java 歷史與程序開發

安裝 Eclipse 與 執行 Java 程式

Jason 的 Android 快樂應用程式學習班

Page 13: 第二堂 學習 Java 語法 (1) Java 歷史與程序開發

下載 Eclipse

• Google 搜索 eclipse download

• 下載

Jason 的 Android 快樂應用程式學習班

Page 14: 第二堂 學習 Java 語法 (1) Java 歷史與程序開發

• File => new => Java Project

建立一個新 Java Project

• package => com.example.learn

• name => LearnJavaJason 的 Android 快樂應用程式學習班

Page 15: 第二堂 學習 Java 語法 (1) Java 歷史與程序開發

建立一個新 class

• 在 project 按右鍵 => new => classes

• 取名為 DemoJason 的 Android 快樂應用程式學習班

Page 16: 第二堂 學習 Java 語法 (1) Java 歷史與程序開發

Demo.class

Jason 的 Android 快樂應用程式學習班

Page 17: 第二堂 學習 Java 語法 (1) Java 歷史與程序開發

1. 到 Demo.java 檔 , 按右鍵

2. 選 Run As => Java Application

3. 結果會出現在 console

執行 Java 程式

Page 18: 第二堂 學習 Java 語法 (1) Java 歷史與程序開發

1. main() 是 Java 程式的起點

2. 程式要用 block { } 框起來

3. 注意縮排

4. 敘述結束時要用 ; 分號

5. 如果要用註解 , 使用 // or /* */

Jason 的 Android 快樂應用程式學習班

Java 編寫時要點

Page 19: 第二堂 學習 Java 語法 (1) Java 歷史與程序開發

Java 的程式結構

Jason 的 Android 快樂應用程式學習班

Page 20: 第二堂 學習 Java 語法 (1) Java 歷史與程序開發

Jason 的 Android 快樂應用程式學習班

Java 的程式結構.java 檔

class

方法 1方法敘述

方法 2方法敘述

Page 21: 第二堂 學習 Java 語法 (1) Java 歷史與程序開發

Jason 的 Android 快樂應用程式學習班

.java 檔 : 裡頭有一個 class

public class Dog{

}

Page 22: 第二堂 學習 Java 語法 (1) Java 歷史與程序開發

Jason 的 Android 快樂應用程式學習班

class : 裡頭有一個或多個 method

public class Dog{ void bark(){

}void jump(){

}}

Page 23: 第二堂 學習 Java 語法 (1) Java 歷史與程序開發

Jason 的 Android 快樂應用程式學習班

method : 執行的指令

public class Dog{ void bark(){

bark 指令 1;bark 指令 2;

}void jump(){jump 指令 1;

}}

Page 24: 第二堂 學習 Java 語法 (1) Java 歷史與程序開發

變數與運算子

Jason 的 Android 快樂應用程式學習班

Page 25: 第二堂 學習 Java 語法 (1) Java 歷史與程序開發

變數

• 什麼是變數 ? 一個存放資料的位置 , 要跟它( 電腦 ) 說要存放的資料是哪種 type

• 變數可分為兩種:基本型別 , 參照型別

• 變數的使用包含:宣告和指定參照物件

Jason 的 Android 快樂應用程式學習班

Page 26: 第二堂 學習 Java 語法 (1) Java 歷史與程序開發

變數的宣告

• int i

• String name

• Dog mDog

Jason 的 Android 快樂應用程式學習班

宣告:給定 Type 與 變數名稱Type 變數名稱

Page 27: 第二堂 學習 Java 語法 (1) Java 歷史與程序開發

變數參照物件

• int i = 8;

• String name = “Hello world!”;

• Dog mDog = new Dog();

Jason 的 Android 快樂應用程式學習班

變數參照物件:用等號指向物件

物件

Page 28: 第二堂 學習 Java 語法 (1) Java 歷史與程序開發

• 變數有兩種 Type : 基本型別跟參照型別

• 基本型別 (Primitive): byte, short, int, long, float, double, char, boolean

• 參照型別 (Reference): String, Dog, Cat 等 ( 自創的 class 都是 )

• 差別在於 , Primitive 會把值直接存入變數 , Reference 會把物件的位址存入變數

Jason 的 Android 快樂應用程式學習班

變數的 Type

Page 29: 第二堂 學習 Java 語法 (1) Java 歷史與程序開發

• 參照型別 (Reference): String, Dog, Cat 等 ( 自創的 class 都是 )

Jason 的 Android 快樂應用程式學習班

變數的 Type :參照型別

變數

Reference 位址

物件

位址指向的物件

mDog

Reference 位址

Dog

ex. Dog mDog = new Dog();

Page 30: 第二堂 學習 Java 語法 (1) Java 歷史與程序開發

• 基本型別 (Primitive): byte, short, int, long, float, double, char, String, boolean

Jason 的 Android 快樂應用程式學習班

變數的 Type :基本型別

變數

Primitive

i

8( 機械碼 )

ex. int i = 8;

Page 31: 第二堂 學習 Java 語法 (1) Java 歷史與程序開發

運算子

• 算術運算子 + - * /

• 邏輯運算子 &&, ||, !

• 比較運算子 ==, !=

Jason 的 Android 快樂應用程式學習班

Page 32: 第二堂 學習 Java 語法 (1) Java 歷史與程序開發

運算子:算術運算子• 算術運算子 + - * /

Jason 的 Android 快樂應用程式學習班

練習 1: int i = 3; i = i + 8;=> i = ?

練習 2: int mNum = 3; mNum = mNum / 3; mNum = mNum + 20=> mNum = ?

Ans: i = 11 Ans: mNum = 21

Page 33: 第二堂 學習 Java 語法 (1) Java 歷史與程序開發

運算子:邏輯運算子• 邏輯運算子 &&, ||, !

• && => And 運算 , 左右兩邊條件都要過

• || => Or 運算 , 左右兩邊條件要有一個過

• ! => Not, 得到的結果反過來 , true 變 false, false 變 true

Jason 的 Android 快樂應用程式學習班

Page 34: 第二堂 學習 Java 語法 (1) Java 歷史與程序開發

運算子:邏輯運算子

Jason 的 Android 快樂應用程式學習班

Ans: a 條件通過 , b 條件沒過 ,所以是 false

練習 1:boolean a = true;boolean b = false;a && b => ? true or false

練習 2:boolean a = true;boolean b = false;a || b => ? true or falseAns: a 條件通過 , b 條件沒過 ,a 跟 b 其中有一個有過 ,所以是 true

Page 35: 第二堂 學習 Java 語法 (1) Java 歷史與程序開發

運算子:比較運算子

Jason 的 Android 快樂應用程式學習班

練習 1:int i = 1; int j = 2;i != j => ? true or false

• 比較運算子 ==, !=

• == => 左右兩邊相等 , 則回傳 true, 不相等回傳 false

• != => 左右兩邊不相等 , 則回傳 true, 相等回傳 false

Ans :1 不等於 2, 所以是 true

Page 36: 第二堂 學習 Java 語法 (1) Java 歷史與程序開發

小試身手:運算子練習

Jason 的 Android 快樂應用程式學習班

練習 1:int i = 1; int j = 2;則 i == j => ? true 還是 false

練習 2:boolean isGood = true;則 (isGood && 1!=2) => ? true 還是 false

Page 37: 第二堂 學習 Java 語法 (1) Java 歷史與程序開發

流程控制

Jason 的 Android 快樂應用程式學習班

Page 38: 第二堂 學習 Java 語法 (1) Java 歷史與程序開發

流程控制

1. if , else2. switch case3. for loop (For 迴圈 )4. while

Jason 的 Android 快樂應用程式學習班

Page 39: 第二堂 學習 Java 語法 (1) Java 歷史與程序開發

If, else 如果 , 否則就

ex 1.if (房價打七折 ){ 我就買一棟房子}else{ 我就到行政院去抗議}

Jason 的 Android 快樂應用程式學習班

Page 40: 第二堂 學習 Java 語法 (1) Java 歷史與程序開發

If, else 如果 , 否則就ex 2.boolean a = ture;boolean b = false;if ( a && b ){ System.out.printIn(“ a 跟 b 條件都過了” )}else{ System.out.printIn(“ a 跟 b 其中有個條件沒過” )}

Jason 的 Android 快樂應用程式學習班

Page 41: 第二堂 學習 Java 語法 (1) Java 歷史與程序開發

題目:一個隨機變數 1~100 如果此變數大於 50, 則輸出 “變數大於 50”, 否則輸出”變數小於 50”

If, else 練習

p.s 隨機變數 1 ~ 100 用 Math.random() * 100 + 1

Page 42: 第二堂 學習 Java 語法 (1) Java 歷史與程序開發

switch caseex:int num =3;switch ( num ){ case 1:

System.out.printIn(“送妳一朵玫瑰花” );break; case 2:

System.out.printIn(“送妳兩朵玫瑰花” ); break; case 3: System.out.printIn(“送妳三朵玫瑰花” );break;}

Jason 的 Android 快樂應用程式學習班

Page 43: 第二堂 學習 Java 語法 (1) Java 歷史與程序開發

switch case 練習

Jason 的 Android 快樂應用程式學習班

題目:一個隨機變數 1~12, 如果此變數為 1 就輸出 “一月” , 變數為 2 就輸出 , “ 二月” , 以此類推

p.s 隨機變數 1 ~ 12 用 (int)Math.random()*11+1

Page 44: 第二堂 學習 Java 語法 (1) Java 歷史與程序開發

for 迴圈

for ( 初始 ; 條件 ; 控制運算式 ) { 迴圈動作 ;}

Jason 的 Android 快樂應用程式學習班

如果條件通過 , 我就進行迴圈內的動作 , 執行完迴圈動作 , 再執行控制 ( 運算式 ) 的動作

Page 45: 第二堂 學習 Java 語法 (1) Java 歷史與程序開發

for 迴圈

for ( int i = 0; i < 10; i ++) { System.out.printIn(“Current i is ” + i );}

Jason 的 Android 快樂應用程式學習班

初始條件 i = 1, 如果 i 小於 10, 就輸出 “ Current i is i 變數” 的字串 , 然後 i = i + 1等到 i >= 10, 結束迴圈

Page 46: 第二堂 學習 Java 語法 (1) Java 歷史與程序開發

while 迴圈int i = 0;while ( i < 10){System.out.printIn(“Current i is ” + i );i++;}

Jason 的 Android 快樂應用程式學習班

如果 i 數字小於 10, 輸出 “ Current i is i 變數” 的字串 ,然後 i = i + 1, 一直循環 .

問 : 把 i++; 拿掉 , 會發生什麼事 ?

Page 47: 第二堂 學習 Java 語法 (1) Java 歷史與程序開發

Array 陣列

int[] i;i = new int[5];

Jason 的 Android 快樂應用程式學習班

陣列可以想成”置物櫃”

宣告 int Array i配置 intArray i

i[0] = 1;i[1] = 2;

將數字放入 intArray i

i[0] i[1] i[2] i[3] i[4]

Page 48: 第二堂 學習 Java 語法 (1) Java 歷史與程序開發

Array 結合 for 迴圈

int[] iArray = new int[5];for (int i = 0, i< 5, i++){iArray[i] = i *3;}

Jason 的 Android 快樂應用程式學習班

問 , iArray[4] = ?

Page 49: 第二堂 學習 Java 語法 (1) Java 歷史與程序開發

小試身手 1 :數字打印

Jason 的 Android 快樂應用程式學習班

1. 打印出數字 1 ~ 1000

Page 50: 第二堂 學習 Java 語法 (1) Java 歷史與程序開發

小試身手 2 :計算學生平均分數

Jason 的 Android 快樂應用程式學習班

1. 學生 30 人 , 隨機給分 0 ~ 100

2. 請計算學生平均分數

p.s 1. 隨機分數用 (int)Math.random()*100+12. 請使用 Array

Page 51: 第二堂 學習 Java 語法 (1) Java 歷史與程序開發

變數的修飾子

Jason 的 Android 快樂應用程式學習班

Page 52: 第二堂 學習 Java 語法 (1) Java 歷史與程序開發

class 成員的存取控制

Jason 的 Android 快樂應用程式學習班

• private => 只有在成員所屬的 class 之中 , 才能存取

• protected => 除了 class 本身 , 在 Subclasses 或 同一 package 下 , 可存取

• public => 在任何 class 下都可存取

• default ( 不寫控制 ) => 在同一個 package 下可存取

Page 53: 第二堂 學習 Java 語法 (1) Java 歷史與程序開發

Static 共享變數

Jason 的 Android 快樂應用程式學習班

• 變數使用 static => 此 class 的 變數可共享

• 方法使用 static => 方法共享 , 不用 new class 物件即可使用

Page 54: 第二堂 學習 Java 語法 (1) Java 歷史與程序開發

參考

Jason 的 Android 快樂應用程式學習班

1. 深入淺出 Java 程式設計 http://www.books.com.tw/products/0010311883

2. 最新 Java 7 程式語言http://www.books.com.tw/products/0010588325