Upload
-
View
470
Download
4
Embed Size (px)
Citation preview
第二堂:學習的 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 => LearnJavaJason 的 Android 快樂應用程式學習班
建立一個新 class
• 在 project 按右鍵 => new => classes
• 取名為 DemoJason 的 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 位址
物件
位址指向的物件
mDog
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 falseAns: 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 , else2. switch case3. 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 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 快樂應用程式學習班
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+12. 請使用 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/0010311883
2. 最新 Java 7 程式語言http://www.books.com.tw/products/0010588325