Java 語言基礎三 Java 運算元、 Pass by value 、 jar 的應用. 課程大綱 一. Java 的運算元  算數運算元 (Arithmatic Operator) 三.關係運算元 (Relational Operator)  邏輯運算元 (Logic Operator)

Slides:



Advertisements
Similar presentations
软件编程基础 一、程序的编辑 Java 源程序是以 Java 为后缀的简单的文本文件,可以用各种 Java 集成开发环境中的源代码编辑器来编写,也可以用其他文 本编辑工具,如 Windows 中的记事本或 DOS 中的 EDIT 软件等。 利用文字编辑器编写下列程序 public class Hello.
Advertisements

JAVA 编 程 技 术 主编 贾振华 2010年1月.
第一單元 建立java 程式.
项目6 通用堆栈.
四資二甲 第三週作業 物件導向程式設計.
JAVA 程式設計 資訊管理系 - 網路組.
陳維魁 博士 儒林圖書公司 第九章 資料抽象化 陳維魁 博士 儒林圖書公司.
TQC+ JAVA全國教師研習會 PLWeb 程式設計練習平台 簡介.
Project 2 JMVC code tracing
Hadoop 單機設定與啟動 step 1. 設定登入免密碼 step 2. 安裝java step 3. 下載安裝Hadoop
Chapter 5 遞迴 資料結構導論 - C語言實作.
程式語言的基礎 Input Output Program 世代 程式語言 第一世代 Machine language 第二世代
Visual C++ introduction
簡易C++除錯技巧 長庚大學機械系
JDK 安裝教學 (for Win7) Soochow University
JAVA 程式設計與資料結構 第十二章 JAR File.
第四章 流程控制(一) if,if-else 與 switch
JAVA程序设计 第5章 深入理解JAVA语言----补充.
Java程式概觀.
程式設計實作.
C語言簡介 日期 : 2018/12/2.
類別(class) 類別class與物件object.
SQL Stored Procedure SQL 預存程序.
安裝JDK 安裝Eclipse Eclipse 中文化
Methods 靜宜大學資工系 蔡奇偉副教授 ©2011.
2017 Operating Systems 作業系統實習 助教:陳主恩、林欣穎 實驗室:720A.
檔案與磁碟的基本介紹.
第 4 章 運算式 (Expression).
Java 程式設計 講師:FrankLin.
JAVA程式語言入門(I) 授課教師:王大瑾
邏輯關係運算 == 等於 & 且 (logical and) ~= 不等於 | 或 (logical or) < 小於
程式設計 博碩文化出版發行.
第一單元 建立java 程式.
第二章Java基本程序设计.
JAVA 程式設計 資訊管理系 - 網路組.
第一次Labview就上手 參考書籍: LabVIEW for Everyone (Jeffrey Travis/Jim Kring)
CH05. 選擇敘述.
期末考.
大綱:加減法的化簡 乘除法的化簡 去括號法則 蘇奕君 台灣數位學習科技股份有限公司
挑戰C++程式語言 ──第8章 進一步談字元與字串
第二章 Java基本语法 讲师:复凡.
第二章 Java语法基础.
流程控制:Switch-Case 94學年度第一學期‧資訊教育 東海大學物理系.
MiRanda Java Interface v1.0的使用方法
函數應用(二)與自定函數.
第二章 Java基本语法 讲师:复凡.
選擇性結構 if-else… switch-case 重複性結構 while… do-while… for…
2018 Operating Systems 作業系統實習 助教:林欣穎 實驗室:720A.
Quiz1 繳交期限: 9/28(四).
安裝JDK 配置windows win7 環境變數
第四章 陣列、指標與參考 4-1 物件陣列 4-2 使用物件指標 4-3 this指標 4-4 new 與 delete
PPT注意事项: 当前PPT课件文件必须和提供的源代码文件夹“代码”在同一目录中即不要移动文件夹“代码”的默认位置。
適用於多選一 可減少if 與 else配對混淆的錯誤.
計算機程式設計 老師:謝孟諺 助教:楊斯竣.
第五章 運算關係式(Expression).
JAVA 程式設計與資料結構 第三章 物件的設計.
Programming & Language Telling the computer what to do
判斷(選擇性敘述) if if else else if 條件運算子.
ABAP Basic Concept (2) 運算子 控制式與迴圈 Subroutines Event Block
String類別 在C語言中提供兩種支援字串的方式 可以使用傳統以null結尾的字元陣列 使用string類別
Chapter 4 Multi-Threads (多執行緒).
輸出執行結果到螢幕上 如果要將執行結果的文字和數值都「輸出」到電腦螢幕時,程式要怎麼寫? class 類別名稱 {
第二章 Java基本语法 讲师:复凡.
Unix指令4-文字編輯與程式撰寫.
Develop and Build Drives by Visual C++ IDE
JUDGE GIRL 使用介紹 & 常見問題 TAs :
微 處 理 機 專 題 – 8051 C語言程式設計 主題:階乘計算
方法(Method) 函數.
ABAP Basic Concept (2) 運算子 控制式與迴圈 Subroutines Event Block
InputStreamReader Console Scanner
Presentation transcript:

Java 語言基礎三 Java 運算元、 Pass by value 、 jar 的應用

課程大綱 一. Java 的運算元  算數運算元 (Arithmatic Operator) 三.關係運算元 (Relational Operator)  邏輯運算元 (Logic Operator)  指定運算元 (Assignment Operator)  三元運算元 (Ternary Operator) 七. Java 運算元的優先順序  Pass by value ( 傳值 )  JAR file 的應用

課程大綱 一. Java 的運算元  算數運算元 (Arithmatic Operator) 三.關係運算元 (Relational Operator)  邏輯運算元 (Logic Operator)  指定運算元 (Assignment Operator)  三元運算元 (Ternary Operator) 七. Java 運算元的優先順序  Pass by value ( 傳值 )  JAR file 的應用

一、 Java 的運算元 在 Java 程式當中運算元可分為以下三種: – 單元 ( 一元 ) 運算元 例如: +2 , -2 。 – 雙元運算元 例如: 2-1 , 3*2 。 – 三元運算元 例如: (2>1)? true : false(? :) 。

一、 Java 的運算元 各運算元在實作上依不同的運用方式可再分為以 下幾類型: – 算數運算元 (Arithmatic Operator) – 關係運算元 (Relational Operator) – 邏輯運算元 (Logic Operator) – 位元運算元 (Bitwise Operator) - SCJP 5.0 不考 – 位移運算元 (Shift Operator) - SCJP 5.0 不考 – 指定運算元 (Assignment Operator) – 三元運算元 (Ternary Operator)

課程大綱 一. Java 的運算元  算數運算元 (Arithmatic Operator) 三.關係運算元 (Relational Operator)  邏輯運算元 (Logic Operator)  指定運算元 (Assignment Operator)  三元運算元 (Ternary Operator) 七. Java 運算元的優先順序  Pass by value ( 傳值 )  JAR file 的應用

二、算數運算元 (Arithmatic Operator) 算數運算元如下表所示: 運算元說明範例 運算元 類別 + 正號 +2  取得正數 2 單元 加法 = 3 雙元 - 負號 -2  取得負數 2 單元 減法 2 – 1 = 1 雙元 * 乘法 2 * 3 = 6 雙元 / 除法 4 / 2 = 2 雙元 % 餘數 3 % 2 = 1 ,求得 3 除以 2 的餘數雙元

二、算數運算元 (Arithmatic Operator) 算數運算元如下表所示 (續) : 運算元說明範例 運算元 類別 ++ 遞增前序遞增: int A = 0 ; A = ++A ;表示 A 先加上 1 之後再指派給 A 所以 A=1 。 雙元 後序遞增: int A = 0 ; A = A++ ;表示 A (此時的 A=0 )會先指派給 A 之後才會執行 ++ 的動作但 A 仍然是 0 。 -- 遞減前序遞減: int A = 0 ; A = - -A ;表示 A 先減 1 之後再指派給 A 所以 A = - 1 雙元 後序遞減: int A = 0 ; A = A- - ;表示 A (此時 的 A=0 )會先指派給 A 之後才會執行 -- 的動作但 A 仍然是 0 。

二、算數運算元 (Arithmatic Operator) 值域在 int( 含 ) 以下的四則運算: – 例如: byte, short, char 在做四則運算的時候, 其當下運算時的資料型別會被轉成 int ,所以要 適時地做型別轉換! – 範例: byte x = 1, y = 2, z; z = x + y; – 編譯時會發生精度錯誤 (possible loss of precision) ,所以必須要轉型。

二、算數運算元 (Arithmatic Operator) 值域在 int( 含 ) 以下的四則運算(續): – 範例: byte x = 1, y = 2, z; z = x + y; – (x+y) 都要括起來,因為要將 x+y 的 int 運算結 果轉成 byte 。 – 但不要寫成這樣: z = (byte)x + y; ,因為運算 +y 型別還是 int ,仍 然會發生精度錯誤! z = (byte)(x + y);

二、算數運算元 (Arithmatic Operator) 遞增運算範例: int a = 0, b = 0; b = a a - a++; 求 a, b ? 答案: a = 3, b = 0

二、算數運算元 (Arithmatic Operator) 速算法: Step 1 :先將有 ++ 的部份用 ( ) 括起來。 int a = 0, b = 0; b = a a - a++; b = a(++) + (++)a – a(++);

二、算數運算元 (Arithmatic Operator) 速算法: Step 2 :遇到 ++ 時將所指定之變數做加 1 的動作。 int a = 0, b = 0; b = a(++) + (++)a – a(++); b =0 (1)(1) + –(2)(2)22(3)(3) ; 123

二、算數運算元 (Arithmatic Operator) 速算法: Step 3 :去括號求 b 值。 int a = 3, b = 0; b = 0(1) + (2)2 – 2(3); b = – 2  b = 0 最後得出的結果 a = 3, b = 0

課程大綱 一. Java 的運算元  算數運算元 (Arithmatic Operator) 三.關係運算元 (Relational Operator)  邏輯運算元 (Logic Operator)  指定運算元 (Assignment Operator)  三元運算元 (Ternary Operator) 七. Java 運算元的優先順序  Pass by value ( 傳值 )  JAR file 的應用

三、關係運算元 (Relational Operator) 關係運算元如下表所示: 運算元說明範例運算元類別 == 等於 a == b 雙元 != 不等於 a != b 雙元 > 大於 a > b 雙元 < 小於 a < b 雙元 >= 大於等於 a >= b 雙元 <= 小於等於 a <= b 雙元

三、關係運算元 (Relational Operator) 關係運算元的傳回值為布林值 (true 或 false) 關係運算元使用範例: – 假設: int a = 1, b = 2; – a == b  return false – a > b  return false – a < b  return true – a >= b  return false – a <= b  return true

課程大綱 一. Java 的運算元  算數運算元 (Arithmatic Operator) 三.關係運算元 (Relational Operator)  邏輯運算元 (Logic Operator)  指定運算元 (Assignment Operator)  三元運算元 (Ternary Operator) 七. Java 運算元的優先順序  Pass by value ( 傳值 )  JAR file 的應用

四、邏輯運算元 (Logic Operator) 邏輯運算元如下表所示: 運算元說明範例運算元類別 &ANDa & b 雙元 |ORa | b 雙元 !NOT! a 單元 ( 短路 )Short-circuit Operator &&ANDa && b 雙元 ||ORa || b 雙元

四、邏輯運算元 (Logic Operator) | 與 || 運算範例: – 假設: int a = 1, b = 2; – (b > a) | (a < 0) – 在 | 的運算上會先運算 (b > a) ,不論傳回值是 true 或者是 false 皆會執行下一組運算 (a < 0) 。 – (b > a) || (a < 0) – 在 || 的運算上同樣也會先運算 (b > a) 若傳回值 為 true 則不會執行下一組運算 (a < 0) 。

四、邏輯運算元 (Logic Operator) & 與 && 運算範例: – 假設: int a = 1, b = 2; – (a > b) & (a < 0) – 在 & 的運算上會先運算 (a > b) ,不論傳回值是 true 或者是 false 皆會執行下一組運算 (a < 0) 。 – (a > b) && (a < 0) – 在 && 的運算上會先運算 (a > b) ,因為其傳回值 為 false 所以不執行下一組運算 (a < 0) 。

四、邏輯運算元 (Logic Operator) 從以上的經驗,撰寫一個 | 範例程式: int a = 1, b = 2; if ((a 0)) { } System.out.println( “ a= ” + a); 利用 | 運算元先執行 (a 0) 的運算,因此最後 a 將會等於 2 。

四、邏輯運算元 (Logic Operator) 從以上的經驗,撰寫一個 || 範例程式: int a = 1, b = 2; if ((a 0)) { } System.out.println( “ a= ” + a); 利用 || 運算元先執行 (a < b) 傳回 true ,之後整 個 || 將結束,因此最後 a 還是 1 。

課程大綱 一. Java 的運算元  算數運算元 (Arithmatic Operator) 三.關係運算元 (Relational Operator)  邏輯運算元 (Logic Operator)  指定運算元 (Assignment Operator)  三元運算元 (Ternary Operator) 七. Java 運算元的優先順序  Pass by value ( 傳值 )  JAR file 的應用

五、指定運算元 (Assignment Operator) 指定運算元如下表所示: 運算元說明範例類別 = 基本指定 a = b 單元 += 加法指定 a += b  a = a + b 雙元 -= 減法指定 a - = b  a = a - b 雙元 *= 乘法指定 a *= b  a = a * b 雙元 /= 除法指定 a /= b  a = a / b 雙元 %= 餘數指定 a %= b  a = a % b 雙元

五、指定運算元 (Assignment Operator) 指定運算元如下表所示 (續) : 運算元說明範例類別 &= AND 指定 a &= b  a = a & b 雙元 |= OR 指定 a |= b  a = a | b 雙元 ^= XOR 指定 a ^= b  a = a ^ b 雙元 >>= 算數右移指定 a >>= b  a = a >> b 雙元 <<= 算數左移指定 a <<= b  a = a << b 雙元 >>>= 邏輯右移指定 a >>>= b  a = a >>> b 雙元

五、指定運算元 (Assignment Operator) 指定算元範例: – 範例一: – int a = 2; a = a * 2 - 3; // 先乘除後加減 – 答案: a = 1 – 範例二: – int a = 2; a *= 2 - 3; – a = 2 * (-1) // 會先做 2 – 3 – 答案: a = -2

五、指定運算元 (Assignment Operator) 賦值( = )沒有比較功能 – 賦值( = )沒有比較功能,有比較功能的是比較 運算子( == )。 – 範例一: int a = 1; – 表示將 1 的整數值賦予(指派)給 a 。 – 範例二: if (a == 1) ? – 判斷 a 的內容值是否等於整數 1 ,是的話回傳 true ,反之則回傳 false 。

課程大綱 一. Java 的運算元  算數運算元 (Arithmatic Operator) 三.關係運算元 (Relational Operator)  邏輯運算元 (Logic Operator)  指定運算元 (Assignment Operator)  三元運算元 (Ternary Operator) 七. Java 運算元的優先順序  Pass by value ( 傳值 )  JAR file 的應用

六、三元運算元 (Ternary Operator) 三元運算子 (Ternary Operator) 其概念和一般 if-else 條件敘述差不多,其表示方法如下: – X = ( 布林運算式 ) ? true-value : false-value – 其運算式是表示當 ( 布林運算式 ) 的回傳值為 true 的時候, 會進行冒號 “ : ” 左邊的敘述 (true-value) ,反之則進行冒 號右邊的敘述 (false-value) 給 X ,問號 “ ? ” 則表示 if 的判 斷 。

六、三元運算元 (Ternary Operator) 三元運算子 (Ternary Operator) 範例程式: – String s = ""; int i = 0, j = 1; s = (i < j) ? " 正確 " : " 錯誤 "; System.out.println("s=" + s); – 執行結果:正確 true

課程大綱 一. Java 的運算元  算數運算元 (Arithmatic Operator) 三.關係運算元 (Relational Operator)  邏輯運算元 (Logic Operator)  指定運算元 (Assignment Operator)  三元運算元 (Ternary Operator) 七. Java 運算元的優先順序  Pass by value ( 傳值 )  JAR file 的應用

七、 Java 運算元的優先順序 Java 運算元本身也有自己的運算優先順序, 首先舉一個簡單的例子: – x = * 3 求 x = ? – 得出的 x 值為 7 ,而不是 9 。這是因為我們都 知道先乘除後加減的關係。

七、 Java 運算元的優先順序 若將題目變得複雜一點... – x = 5 * 3 9 – 1 || 20 >= 20 – 30 && false – 這要如何計算呢??

七、 Java 運算元的優先順序 因此我們必須了解在 Java 語言中不同運算元間的運算優先順序: 優先順序運算符 1() []. 2 ! +( 正 ) -( 負 ) ~ * / % 4 +( 加 ) -( 減 ) 5 > >>> 6 >= instanceof 7== != 8& 9^ 10| 11&& 12|| 13?: 14= += -= *= /= %= &= |= ^= ~= >= >>>=

七、 Java 運算元的優先順序 解析: x = 5 * 3 9 – 1 || 20 >= 20 – 30 && false 先算 5*3 、 3+7 、 9-1 、 的結果 15 8 || 20 >= -10 && false 再算 15 8 、 20 >= -10 的結果 true & true || true && false 再算 true & true 的結果 true || true && false 再算 true && false 的結果 true || false x = true

課程大綱 一. Java 的運算元  算數運算元 (Arithmatic Operator) 三.關係運算元 (Relational Operator)  邏輯運算元 (Logic Operator)  指定運算元 (Assignment Operator)  三元運算元 (Ternary Operator) 七. Java 運算元的優先順序  Pass by value ( 傳值 )  JAR file 的應用

八、 Pass by value ( 傳值 ) Java 中參數的指派都是傳遞目前 primitive type 的內容值或 reference type 的參照值。 其實說穿了就是傳遞 stack 的內容。 因此,這樣的方式稱之為 pass by value 。

八、 Pass by value ( 傳值 ) Pass by value 範例: public static void main(String[] args) { String[] obj = {“Java”, “SCJP 5.0”}; aMethod(obj); } public static void aMethod(String[] o) { // block of code System.out.println(o); } 傳遞 obj 物件的參考值 此時的 o 與 obj 將參照同一個物件

八、 Pass by value ( 傳值 ) 根據 pass by value ,當呼叫 aMethod(obj) 時, 表示將 obj 物件變數的 stack 的內容值 傳給 aMethod() 方法參數列中的 o 物件變數 0xabc objo JavaSCJP 5.0 0xabc

課程大綱 一. Java 的運算元  算數運算元 (Arithmatic Operator) 三.關係運算元 (Relational Operator)  邏輯運算元 (Logic Operator)  指定運算元 (Assignment Operator)  三元運算元 (Ternary Operator) 七. Java 運算元的優先順序  Pass by value ( 傳值 )  JAR file 的應用

九、 JAR file 的應用 JAR ( Java Archive ) 就是負責管理 Java classes 檔案的壓縮工具, 將多個不同 package 下的多個 java classes 壓 縮成一個.jar 檔,以便於攜帶與部署。 在 \bin 目錄下提供了 jar.exe 工具來負責包 裝與壓製。 在壓制的過程中預設使用 ZIP 壓縮格式。

九、 JAR file 的應用 META-INF 目錄 – 大多數 JAR 文件包含一個 META-INF 目錄,它用 於說明部署時的相關數據與信息,如安全性和 版本信息。 – JavaSE 平台識別並解釋 META-INF 目錄中的文件, 以便部署與配置應用程式,其文件包含: MANIFEST.MF :清單檔 INDEX.LIST :索引資訊檔 xxx.SF : JAR 文件的簽名文件。 xxx.DSA :與簽名文件相關聯的簽名程序塊文件,它 存儲了用於簽名 JAR 文件的公共簽名。

九、 JAR file 的應用 MANIFEST.MF 文件檔 這個 文件定義了以下常用的設定值 : Manifest-Version: 1.0 Manifest 的版本 Ant-Version: Apache Ant Ant 的版本 Created-By: Vincent 創始人 Main-Class: com.MyForm 主程式 Class-Path: 類別路徑

九、 JAR file 的應用 常見的 jar 工具用法、功能及命令: -c 建立新的歸檔(歸檔指的就是 jar 檔) -t 列出歸檔的目錄 -x 從歸檔擷取以命名的 ( 或全部 ) 檔案 -u 更先現有的歸檔 -v 在標準輸出中產生 verbose 輸出 -f 指定歸檔檔名 -m 包含來自指定 manifest 檔案的顯示資訊 -0 不使用 ZIP 壓縮 -M 不建立項目的 manifest 檔案 -i 為指定的 jar 檔產生索引資訊 -C 變更為指定的目錄並包含下列檔案

九、 JAR file 的應用 jar 範例一: – 若要將 A.class 與 B.class 這二個類別檔案保存 在名稱為 foo.jar 的歸檔中: – jar -cvf foo.jar A.class B.class – c :建立新的歸檔。 – v :在標準輸出中產生 verbose 輸出。 – f :指定歸檔檔名  foo.jar 。

九、 JAR file 的應用 jar 範例二: – 將 event 目錄下所產生的 classes 包裝成一個可 以直接執行的 MemberForm.jar 檔,並且使用自 定的 MANIFEST.MF 檔案內容。 – jar –cvfm MemberForm.jar MANIFEST.MF event/*.* – m :包含來自指定 manifest 檔案也就是 MANIFEST.MF 的顯示資訊。

九、 JAR file 的應用 MANIFEST.MF 檔案內容 – 注意在 : 後面要有半形空白: 執行 jar 命令 + 相關參數! 執行 MemberForm.jar (雙擊) Manifest-Version: 1.0 Ant-Version: Created-By: Vincent Main-Class: event.MemberForm Class-Path:

九、 JAR file 的應用