第二堂:
學習的 Java 語法 (1)
Java 的歷史與程序開發
柯力中 Jason Ko
Jason的Android 快樂應用程式學習班
• Java 介紹
• 安裝 Eclipse 與 執行 Java 程式
• Java 的程式結構
• 變數與運算子
• 流程控制
• 變數的修飾子
課程內容
Java 介紹
Jason的Android 快樂應用程式學習班
什麼是電腦(程式)語言?
• 就像人溝通會用不同的語言, 跟電腦溝通需要
使用電腦語言
Jason的Android 快樂應用程式學習班
用我聽得懂的
話跟我說!
電腦語言有高低階之分
高階語言 編譯器 機器碼 執行
• 電腦只聽得懂 0 與 1 的二維碼, 但人無法只用
0 與 1 溝通. 為了讓寫程式更像人在說話, 我們
發明了高階語言與編譯器.
如果衣服打5折,
我就買 2 件 讓我來翻譯
(compiler)
01010001
…..
為什麼要用 JAVA
• 因為 Java 可以多平台執行, 且設計方式為物
件導向, 簡單說就是易學且通用
很多人說我易學
難精! 泣~
我很友善的~我
可以在任何平台
執行, 只要先安
裝 JVM
• JVM 是 Java Virtual Machine 的簡稱, 就是 Jave 虛擬
機, 它能夠理解 Java 編譯器編譯過的程式碼
什麼是 JVM
.java 編譯器 JVM執行.class
程式碼
再複習一下
.java 編譯器 JVM執行.class
高階語言 編譯器 機器碼 執行
(compiler)
(.class 不是機器碼)
結論: 寫好 Java, 其他的事就讓
compiler 跟 JVM 處理!
Jason的Android 快樂應用程式學習班
Java 簡介(不用記)
• Java 誕生於 1995 年
• 最多工程師使用的語言
• 特色為物件導向, 跨平台, 泛型設計
• Android 使用 Java 語言開發, 然後再編譯成 .dex 檔給機
器使用
Jason的Android 快樂應用程式學習班
我很 Young!
我很紅!
猜猜看這程式碼寫啥!
安裝 Eclipse 與 執行 Java 程式
Jason的Android 快樂應用程式學習班
下載 Eclipse
• Google 搜索 eclipse download
• 下載
Jason的Android 快樂應用程式學習班
• File => new => Java Project
建立一個新 Java Project
• package => com.example.learn
• name => LearnJava
Jason的Android 快樂應用程式學習班
建立一個新 class
• 在 project 按右鍵 => new => classes
• 取名為 Demo
Jason的Android 快樂應用程式學習班
Demo.class
Jason的Android 快樂應用程式學習班
1. 到 Demo.java 檔, 按右鍵
2. 選 Run As => Java Application
3. 結果會出現在 console
執行 Java 程式
1. main() 是 Java 程式的起點
2. 程式要用 block { } 框起來
3. 注意縮排
4. 敘述結束時要用 ; 分號
5. 如果要用註解, 使用 // or /* */
Jason的Android 快樂應用程式學習班
Java編寫時要點
Java 的程式結構
Jason的Android 快樂應用程式學習班
Jason的Android 快樂應用程式學習班
Java 的程式結構
.java 檔
class
方法 1
方法敘述
方法 2
方法敘述
Jason的Android 快樂應用程式學習班
.java 檔 : 裡頭有一個 class
public class Dog{
}
Jason的Android 快樂應用程式學習班
class : 裡頭有一個或多個 method
public class Dog{
void bark(){
}
void jump(){
}
}
Jason的Android 快樂應用程式學習班
method : 執行的指令
public class Dog{
void bark(){
bark指令1;
bark指令2;
}
void jump(){
jump指令1;
}
}
變數與運算子
Jason的Android 快樂應用程式學習班
變數
• 什麼是變數? 一個存放資料的位置, 要跟它(電
腦)說要存放的資料是哪種 type
• 變數可分為兩種:基本型別, 參照型別
• 變數的使用包含:宣告和指定參照物件
Jason的Android 快樂應用程式學習班
變數的宣告
• int i
• String name
• Dog mDog
Jason的Android 快樂應用程式學習班
宣告:給定 Type 與 變數名稱
Type 變數名稱
變數參照物件
• int i = 8;
• String name = “Hello world!”;
• Dog mDog = new Dog();
Jason的Android 快樂應用程式學習班
變數參照物件:用等號指向物件
物件
• 變數有兩種 Type : 基本型別跟參照型別
• 基本型別(Primitive): byte, short, int, long, float, double,
char, boolean
• 參照型別(Reference): String, Dog, Cat 等(自創的 class
都是)
• 差別在於, Primitive 會把值直接存入變數, Reference 會
把物件的位址存入變數
Jason的Android 快樂應用程式學習班
變數的Type
• 參照型別(Reference): String, Dog, Cat 等(自
創的 class 都是)
Jason的Android 快樂應用程式學習班
變數的Type:參照型別
變
數
Reference 位址
物
件
位址指向的物件
mDo
g
Reference 位址
Dog
ex. Dog mDog = new Dog();
• 基本型別(Primitive): byte, short, int, long,
float, double, char, String, boolean
Jason的Android 快樂應用程式學習班
變數的Type:基本型別
變
數
Primitive
i
8(機械碼)
ex. int i = 8;
運算子
• 算術運算子 + - * /
• 邏輯運算子 &&, ||, !
• 比較運算子 ==, !=
Jason的Android 快樂應用程式學習班
運算子:算術運算子
• 算術運算子 + - * /
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
運算子:邏輯運算子
• 邏輯運算子 &&, ||, !
• && => And 運算, 左右兩邊條件都要過
• || => Or 運算, 左右兩邊條件要有一個過
• ! => Not, 得到的結果反過來, true 變 false, false 變
true
Jason的Android 快樂應用程式學習班
運算子:邏輯運算子
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
false
Ans:
a 條件通過,
b 條件沒過,
a 跟 b 其中有一個有過,
所以是 true
運算子:比較運算子
Jason的Android 快樂應用程式學習班
練習 1:
int i = 1;
int j = 2;
i != j => ? true or false
• 比較運算子 ==, !=
• == => 左右兩邊相等, 則回傳 true, 不相等回傳 false
• != => 左右兩邊不相等, 則回傳 true, 相等回傳 false
Ans :
1 不等於 2, 所以是 true
小試身手:運算子練習
Jason的Android 快樂應用程式學習班
練習 1:
int i = 1; int j = 2;
則 i == j
=> ? true 還是 false
練習 2:
boolean isGood = true;
則 (isGood && 1!=2)
=> ? true 還是 false
流程控制
Jason的Android 快樂應用程式學習班
流程控制
1. if , else
2. switch case
3. for loop (For 迴圈)
4. while
Jason的Android 快樂應用程式學習班
If, else 如果, 否則就
ex 1.
if (房價打七折){
我就買一棟房子
}else{
我就到行政院去抗議
}
Jason的Android 快樂應用程式學習班
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 快樂應用程式學習班
題目:一個隨機變數1~100 如果此變數大於
50, 則輸出 “變數大於50”, 否則輸出”變數小於
50”
If, else 練習
p.s 隨機變數 1 ~ 100 用 Math.random() * 100 +
1
switch case
ex:
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 快樂應用程式學習班
switch case 練習
Jason的Android 快樂應用程式學習班
題目:一個隨機變數 1~12, 如果此變數為 1
就輸出 “一月”, 變數為2就輸出, “二月”, 以此類
推
p.s 隨機變數 1 ~ 12 用 (int)Math.random()*11+1
for 迴圈
for ( 初始; 條件; 控制運算式) {
迴圈動作;
}
Jason的Android 快樂應用程式學習班
如果條件通過, 我就進行迴圈內的動作, 執行完迴
圈動作, 再執行控制(運算式)的動作
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,
結束迴圈
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++; 拿掉, 會發生什麼事?
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]
Array 結合 for 迴圈
int[] iArray = new int[5];
for (int i = 0, i< 5, i++){
iArray[i] = i *3;
}
Jason的Android 快樂應用程式學習班
問, iArray[4] = ?
小試身手1:數字打印
Jason的Android 快樂應用程式學習班
1. 打印出數字 1 ~ 1000
小試身手2:計算學生平均分數
Jason的Android 快樂應用程式學習班
1. 學生 30 人, 隨機給分 0 ~ 100
2. 請計算學生平均分數
p.s
1. 隨機分數用 (int)Math.random()*100+1
2. 請使用 Array
變數的修飾子
Jason的Android 快樂應用程式學習班
class 成員的存取控制
Jason的Android 快樂應用程式學習班
• private => 只有在成員所屬的 class 之中, 才能存取
• protected => 除了class 本身, 在 Subclasses 或 同一
package 下, 可存取
• public => 在任何 class 下都可存取
• default (不寫控制) => 在同一個 package 下可存取
Static 共享變數
Jason的Android 快樂應用程式學習班
• 變數使用 static => 此 class 的 變數可共享
• 方法使用 static => 方法共享, 不用 new class
物件即可使用
參考
Jason的Android 快樂應用程式學習班
1. 深入淺出 Java 程式設計
http://www.books.com.tw/products/00103118
83
2. 最新 Java 7 程式語言
http://www.books.com.tw/products/00105883
25

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