Java 語言基礎三 Java 運算元、 Pass by value 、 jar 的應用
description
Transcript of Java 語言基礎三 Java 運算元、 Pass by value 、 jar 的應用
![Page 1: Java 語言基礎三 Java 運算元、 Pass by value 、 jar 的應用](https://reader033.fdocuments.net/reader033/viewer/2022061506/56813def550346895da7c7fe/html5/thumbnails/1.jpg)
Java 語言基礎三Java 運算元、 Pass by value 、 jar 的應用
![Page 2: Java 語言基礎三 Java 運算元、 Pass by value 、 jar 的應用](https://reader033.fdocuments.net/reader033/viewer/2022061506/56813def550346895da7c7fe/html5/thumbnails/2.jpg)
課程大綱.壹 Java 的運算元
貳. 算數運算元 (Arithmatic Operator)參. 關係運算元 (Relational Operator)肆. 邏輯運算元 (Logic Operator)伍. 指定運算元 (Assignment Operator)陸. 三元運算元 (Ternary Operator)
.柒 Java 運算元的優先順序
.捌 Pass by value ( 傳值 )
.玖 JAR file 的應用
![Page 3: Java 語言基礎三 Java 運算元、 Pass by value 、 jar 的應用](https://reader033.fdocuments.net/reader033/viewer/2022061506/56813def550346895da7c7fe/html5/thumbnails/3.jpg)
課程大綱.壹 Java 的運算元
貳. 算數運算元 (Arithmatic Operator)參. 關係運算元 (Relational Operator)肆. 邏輯運算元 (Logic Operator)伍. 指定運算元 (Assignment Operator)陸. 三元運算元 (Ternary Operator)
.柒 Java 運算元的優先順序
.捌 Pass by value ( 傳值 )
.玖 JAR file 的應用
![Page 4: Java 語言基礎三 Java 運算元、 Pass by value 、 jar 的應用](https://reader033.fdocuments.net/reader033/viewer/2022061506/56813def550346895da7c7fe/html5/thumbnails/4.jpg)
一、 Java 的運算元• 在 Java 程式當中運算元可分為以下三種:– 單元 ( 一元 ) 運算元
例如: +2 , -2 。– 雙元運算元
例如: 2-1 , 3*2 。– 三元運算元
例如: (2>1)? true : false(? :) 。
![Page 5: Java 語言基礎三 Java 運算元、 Pass by value 、 jar 的應用](https://reader033.fdocuments.net/reader033/viewer/2022061506/56813def550346895da7c7fe/html5/thumbnails/5.jpg)
一、 Java 的運算元• 各運算元在實作上依不同的運用方式可再分為以
下幾類型:– 算數運算元 (Arithmatic Operator)– 關係運算元 (Relational Operator)– 邏輯運算元 (Logic Operator)– 位元運算元 (Bitwise Operator) - SCJP 5.0 不考– 位移運算元 (Shift Operator) - SCJP 5.0 不考– 指定運算元 (Assignment Operator)– 三元運算元 (Ternary Operator)
![Page 6: Java 語言基礎三 Java 運算元、 Pass by value 、 jar 的應用](https://reader033.fdocuments.net/reader033/viewer/2022061506/56813def550346895da7c7fe/html5/thumbnails/6.jpg)
課程大綱.壹 Java 的運算元
貳. 算數運算元 (Arithmatic Operator)參. 關係運算元 (Relational Operator)肆. 邏輯運算元 (Logic Operator)伍. 指定運算元 (Assignment Operator)陸. 三元運算元 (Ternary Operator)
.柒 Java 運算元的優先順序
.捌 Pass by value ( 傳值 )
.玖 JAR file 的應用
![Page 7: Java 語言基礎三 Java 運算元、 Pass by value 、 jar 的應用](https://reader033.fdocuments.net/reader033/viewer/2022061506/56813def550346895da7c7fe/html5/thumbnails/7.jpg)
二、算數運算元 (Arithmatic Operator)
• 算數運算元如下表所示:
運算元 說明 範例 運算元類別
+ 正號 +2 取得正數 2 單元
加法 2 + 1 = 3 雙元- 負號 -2 取得負數 2 單元
減法 2 – 1 = 1 雙元* 乘法 2 * 3 = 6 雙元/ 除法 4 / 2 = 2 雙元% 餘數 3 % 2 = 1 ,求得 3 除以 2 的餘數 雙元
![Page 8: Java 語言基礎三 Java 運算元、 Pass by value 、 jar 的應用](https://reader033.fdocuments.net/reader033/viewer/2022061506/56813def550346895da7c7fe/html5/thumbnails/8.jpg)
二、算數運算元 (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 。
![Page 9: Java 語言基礎三 Java 運算元、 Pass by value 、 jar 的應用](https://reader033.fdocuments.net/reader033/viewer/2022061506/56813def550346895da7c7fe/html5/thumbnails/9.jpg)
二、算數運算元 (Arithmatic Operator)
• 值域在 int( 含 ) 以下的四則運算:– 例如: byte, short, char 在做四則運算的時候,
其當下運算時的資料型別會被轉成 int ,所以要適時地做型別轉換!
– 範例:byte x = 1, y = 2, z;z = x + y;
– 編譯時會發生精度錯誤 (possible loss of precision) ,所以必須要轉型。
![Page 10: Java 語言基礎三 Java 運算元、 Pass by value 、 jar 的應用](https://reader033.fdocuments.net/reader033/viewer/2022061506/56813def550346895da7c7fe/html5/thumbnails/10.jpg)
二、算數運算元 (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);
![Page 11: Java 語言基礎三 Java 運算元、 Pass by value 、 jar 的應用](https://reader033.fdocuments.net/reader033/viewer/2022061506/56813def550346895da7c7fe/html5/thumbnails/11.jpg)
二、算數運算元 (Arithmatic Operator)
• 遞增運算範例:• int a = 0, b = 0;
b = a++ + ++a - a++;求 a , b ?
• 答案: a = 3, b = 0
![Page 12: Java 語言基礎三 Java 運算元、 Pass by value 、 jar 的應用](https://reader033.fdocuments.net/reader033/viewer/2022061506/56813def550346895da7c7fe/html5/thumbnails/12.jpg)
二、算數運算元 (Arithmatic Operator)
• 速算法:• Step 1 :先將有 ++ 的部份用 ( ) 括起來。 • int a = 0, b = 0;
b = a++ + ++a - a++;b = a(++) + (++)a – a(++);
![Page 13: Java 語言基礎三 Java 運算元、 Pass by value 、 jar 的應用](https://reader033.fdocuments.net/reader033/viewer/2022061506/56813def550346895da7c7fe/html5/thumbnails/13.jpg)
二、算數運算元 (Arithmatic Operator)
• 速算法:• Step 2 :遇到 ++ 時將所指定之變數做加 1
的動作。 • int a = 0 , b = 0;
b = a(++) + (++)a – a(++);
b =
0 (1)
+ – (2)
2 2 (3)
;
123
![Page 14: Java 語言基礎三 Java 運算元、 Pass by value 、 jar 的應用](https://reader033.fdocuments.net/reader033/viewer/2022061506/56813def550346895da7c7fe/html5/thumbnails/14.jpg)
二、算數運算元 (Arithmatic Operator)
• 速算法:• Step 3 :去括號求 b 值。 • int a = 3 , b = 0;
b = 0(1) + (2)2 – 2(3);b = 0 + 2 – 2 b = 0最後得出的結果 a = 3, b = 0
![Page 15: Java 語言基礎三 Java 運算元、 Pass by value 、 jar 的應用](https://reader033.fdocuments.net/reader033/viewer/2022061506/56813def550346895da7c7fe/html5/thumbnails/15.jpg)
課程大綱.壹 Java 的運算元
貳. 算數運算元 (Arithmatic Operator)參. 關係運算元 (Relational Operator)肆. 邏輯運算元 (Logic Operator)伍. 指定運算元 (Assignment Operator)陸. 三元運算元 (Ternary Operator)
.柒 Java 運算元的優先順序
.捌 Pass by value ( 傳值 )
.玖 JAR file 的應用
![Page 16: Java 語言基礎三 Java 運算元、 Pass by value 、 jar 的應用](https://reader033.fdocuments.net/reader033/viewer/2022061506/56813def550346895da7c7fe/html5/thumbnails/16.jpg)
三、關係運算元 (Relational Operator)
• 關係運算元如下表所示:
運算元 說明 範例 運算元類別
== 等於 a == b 雙元
!= 不等於 a != b 雙元
> 大於 a > b 雙元
< 小於 a < b 雙元
>= 大於等於 a >= b 雙元
<= 小於等於 a <= b 雙元
![Page 17: Java 語言基礎三 Java 運算元、 Pass by value 、 jar 的應用](https://reader033.fdocuments.net/reader033/viewer/2022061506/56813def550346895da7c7fe/html5/thumbnails/17.jpg)
三、關係運算元 (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
![Page 18: Java 語言基礎三 Java 運算元、 Pass by value 、 jar 的應用](https://reader033.fdocuments.net/reader033/viewer/2022061506/56813def550346895da7c7fe/html5/thumbnails/18.jpg)
課程大綱.壹 Java 的運算元
貳. 算數運算元 (Arithmatic Operator)參. 關係運算元 (Relational Operator)肆. 邏輯運算元 (Logic Operator)伍. 指定運算元 (Assignment Operator)陸. 三元運算元 (Ternary Operator)
.柒 Java 運算元的優先順序
.捌 Pass by value ( 傳值 )
.玖 JAR file 的應用
![Page 19: Java 語言基礎三 Java 運算元、 Pass by value 、 jar 的應用](https://reader033.fdocuments.net/reader033/viewer/2022061506/56813def550346895da7c7fe/html5/thumbnails/19.jpg)
四、邏輯運算元 (Logic Operator)• 邏輯運算元如下表所示:
運算元 說明 範例 運算元類別& AND a & b 雙元
| OR a | b 雙元
! NOT ! a 單元
( 短路 )Short-circuit Operator
&& AND a && b 雙元
|| OR a || b 雙元
![Page 20: Java 語言基礎三 Java 運算元、 Pass by value 、 jar 的應用](https://reader033.fdocuments.net/reader033/viewer/2022061506/56813def550346895da7c7fe/html5/thumbnails/20.jpg)
四、邏輯運算元 (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) 。
![Page 21: Java 語言基礎三 Java 運算元、 Pass by value 、 jar 的應用](https://reader033.fdocuments.net/reader033/viewer/2022061506/56813def550346895da7c7fe/html5/thumbnails/21.jpg)
四、邏輯運算元 (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) 。
![Page 22: Java 語言基礎三 Java 運算元、 Pass by value 、 jar 的應用](https://reader033.fdocuments.net/reader033/viewer/2022061506/56813def550346895da7c7fe/html5/thumbnails/22.jpg)
四、邏輯運算元 (Logic Operator)
• 從以上的經驗,撰寫一個 | 範例程式:• int a = 1, b = 2;
if ((a < b) | (++a > 0)) { }System.out.println(“a=” + a);
• 利用 | 運算元先執行 (a < b) 傳回 true 之後再執行 (++a > 0) 的運算,因此最後 a 將會等於 2 。
![Page 23: Java 語言基礎三 Java 運算元、 Pass by value 、 jar 的應用](https://reader033.fdocuments.net/reader033/viewer/2022061506/56813def550346895da7c7fe/html5/thumbnails/23.jpg)
四、邏輯運算元 (Logic Operator)
• 從以上的經驗,撰寫一個 || 範例程式:• int a = 1, b = 2;
if ((a < b) || (++a > 0)) { }System.out.println(“a=” + a);
• 利用 || 運算元先執行 (a < b) 傳回 true ,之後整個 || 將結束,因此最後 a 還是 1 。
![Page 24: Java 語言基礎三 Java 運算元、 Pass by value 、 jar 的應用](https://reader033.fdocuments.net/reader033/viewer/2022061506/56813def550346895da7c7fe/html5/thumbnails/24.jpg)
課程大綱.壹 Java 的運算元
貳. 算數運算元 (Arithmatic Operator)參. 關係運算元 (Relational Operator)肆. 邏輯運算元 (Logic Operator)伍. 指定運算元 (Assignment Operator)陸. 三元運算元 (Ternary Operator)
.柒 Java 運算元的優先順序
.捌 Pass by value ( 傳值 )
.玖 JAR file 的應用
![Page 25: Java 語言基礎三 Java 運算元、 Pass by value 、 jar 的應用](https://reader033.fdocuments.net/reader033/viewer/2022061506/56813def550346895da7c7fe/html5/thumbnails/25.jpg)
五、指定運算元 (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 雙元
![Page 26: Java 語言基礎三 Java 運算元、 Pass by value 、 jar 的應用](https://reader033.fdocuments.net/reader033/viewer/2022061506/56813def550346895da7c7fe/html5/thumbnails/26.jpg)
五、指定運算元 (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 雙元
![Page 27: Java 語言基礎三 Java 運算元、 Pass by value 、 jar 的應用](https://reader033.fdocuments.net/reader033/viewer/2022061506/56813def550346895da7c7fe/html5/thumbnails/27.jpg)
五、指定運算元 (Assignment Operator)
• 指定算元範例:– 範例一:– int a = 2;
a = a * 2 - 3; // 先乘除後加減– 答案: a = 1– 範例二:– int a = 2;
a *= 2 - 3; – a = 2 * (-1) // 會先做 2 – 3– 答案: a = -2
![Page 28: Java 語言基礎三 Java 運算元、 Pass by value 、 jar 的應用](https://reader033.fdocuments.net/reader033/viewer/2022061506/56813def550346895da7c7fe/html5/thumbnails/28.jpg)
五、指定運算元 (Assignment Operator)
• 賦值( = )沒有比較功能– 賦值( = )沒有比較功能,有比較功能的是比
較運算子( == )。– 範例一: int a = 1;– 表示將 1 的整數值賦予(指派)給 a 。– 範例二: if (a == 1) ?– 判斷 a 的內容值是否等於整數 1 ,是的話回
傳 true ,反之則回傳 false 。
![Page 29: Java 語言基礎三 Java 運算元、 Pass by value 、 jar 的應用](https://reader033.fdocuments.net/reader033/viewer/2022061506/56813def550346895da7c7fe/html5/thumbnails/29.jpg)
課程大綱.壹 Java 的運算元
貳. 算數運算元 (Arithmatic Operator)參. 關係運算元 (Relational Operator)肆. 邏輯運算元 (Logic Operator)伍. 指定運算元 (Assignment Operator)陸. 三元運算元 (Ternary Operator)
.柒 Java 運算元的優先順序
.捌 Pass by value ( 傳值 )
.玖 JAR file 的應用
![Page 30: Java 語言基礎三 Java 運算元、 Pass by value 、 jar 的應用](https://reader033.fdocuments.net/reader033/viewer/2022061506/56813def550346895da7c7fe/html5/thumbnails/30.jpg)
六、三元運算元 (Ternary Operator)
• 三元運算子 (Ternary Operator) 其概念和一般if-else 條件敘述差不多,其表示方法如下:– X = ( 布林運算式 ) ? true-value: false-value– 其運算式是表示當 ( 布林運算式 ) 的回傳值為 true 的時
候,會進行冒號“:”左邊的敘述 (true-value) ,反之則進行冒號右邊的敘述 (false-value) 給 X ,問號 “ ?” 則表示 if 的判斷。
![Page 31: Java 語言基礎三 Java 運算元、 Pass by value 、 jar 的應用](https://reader033.fdocuments.net/reader033/viewer/2022061506/56813def550346895da7c7fe/html5/thumbnails/31.jpg)
六、三元運算元 (Ternary Operator)
• 三元運算子 (Ternary Operator) 範例程式:– String s = "";
int i = 0, j = 1;s = (i < j) ? " 正確 " : " 錯誤 ";
System.out.println("s=" + s);
– 執行結果:正確
true
![Page 32: Java 語言基礎三 Java 運算元、 Pass by value 、 jar 的應用](https://reader033.fdocuments.net/reader033/viewer/2022061506/56813def550346895da7c7fe/html5/thumbnails/32.jpg)
課程大綱.壹 Java 的運算元
貳. 算數運算元 (Arithmatic Operator)參. 關係運算元 (Relational Operator)肆. 邏輯運算元 (Logic Operator)伍. 指定運算元 (Assignment Operator)陸. 三元運算元 (Ternary Operator)
.柒 Java 運算元的優先順序
.捌 Pass by value ( 傳值 )
.玖 JAR file 的應用
![Page 33: Java 語言基礎三 Java 運算元、 Pass by value 、 jar 的應用](https://reader033.fdocuments.net/reader033/viewer/2022061506/56813def550346895da7c7fe/html5/thumbnails/33.jpg)
七、 Java 運算元的優先順序• Java 運算元本身也有自己的運算優先順序,
首先舉一個簡單的例子:– x = 1 + 2 * 3 求 x = ?– 得出的 x 值為 7 ,而不是 9 。這是因為我們
都知道先乘除後加減的關係。
![Page 34: Java 語言基礎三 Java 運算元、 Pass by value 、 jar 的應用](https://reader033.fdocuments.net/reader033/viewer/2022061506/56813def550346895da7c7fe/html5/thumbnails/34.jpg)
七、 Java 運算元的優先順序• 若將題目變得複雜一點 ...– x = 5 * 3 < 20 & 3 + 7 > 9 – 1 || 20 >= 20 – 30
&& false
– 這要如何計算呢??
![Page 35: Java 語言基礎三 Java 運算元、 Pass by value 、 jar 的應用](https://reader033.fdocuments.net/reader033/viewer/2022061506/56813def550346895da7c7fe/html5/thumbnails/35.jpg)
七、 Java 運算元的優先順序• 因此我們必須了解在 Java 語言中不同運算元間的運算優先順序:
優先權值越小表示越先被運算
若碰到相同的優先權值
則看原運算式先碰到誰,誰就先做
優先順序 運算符
1 () [] .
2 ! +(正 ) -(負 ) ~ ++ --
3 * / %
4 +(加 ) -(減 )
5 << >> >>>
6 < <= > >= instanceof
7 == !=
8 &
9 ^
10 |
11 &&
12 ||
13 ?:
14 = += -= *= /= %= &= |= ^= ~= <<= >>= >>>=
![Page 36: Java 語言基礎三 Java 運算元、 Pass by value 、 jar 的應用](https://reader033.fdocuments.net/reader033/viewer/2022061506/56813def550346895da7c7fe/html5/thumbnails/36.jpg)
七、 Java 運算元的優先順序
• 解析:• x = 5 * 3 < 20 & 3 + 7 > 9 – 1 || 20 >= 20 – 30 && false• 先算 5*3 、 3+7 、 9-1 、 20-30 的結果• 15 < 20 & 10 > 8 || 20 >= -10 && false• 再算 15 < 20 、 10 > 8 、 20 >= -10 的結果• true & true || true && false• 再算 true & true 的結果• true || true && false• 再算 true && false 的結果• true || false• x = true
![Page 37: Java 語言基礎三 Java 運算元、 Pass by value 、 jar 的應用](https://reader033.fdocuments.net/reader033/viewer/2022061506/56813def550346895da7c7fe/html5/thumbnails/37.jpg)
課程大綱.壹 Java 的運算元
貳. 算數運算元 (Arithmatic Operator)參. 關係運算元 (Relational Operator)肆. 邏輯運算元 (Logic Operator)伍. 指定運算元 (Assignment Operator)陸. 三元運算元 (Ternary Operator)
.柒 Java 運算元的優先順序
.捌 Pass by value ( 傳值 )
.玖 JAR file 的應用
![Page 38: Java 語言基礎三 Java 運算元、 Pass by value 、 jar 的應用](https://reader033.fdocuments.net/reader033/viewer/2022061506/56813def550346895da7c7fe/html5/thumbnails/38.jpg)
八、 Pass by value ( 傳值 )
• Java 中參數的指派都是傳遞目前 primitive type 的內容值或 reference type 的參照值。
• 其實說穿了就是傳遞 stack 的內容。• 因此,這樣的方式稱之為 pass by value 。
![Page 39: Java 語言基礎三 Java 運算元、 Pass by value 、 jar 的應用](https://reader033.fdocuments.net/reader033/viewer/2022061506/56813def550346895da7c7fe/html5/thumbnails/39.jpg)
八、 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 將參照同一個物件
![Page 40: Java 語言基礎三 Java 運算元、 Pass by value 、 jar 的應用](https://reader033.fdocuments.net/reader033/viewer/2022061506/56813def550346895da7c7fe/html5/thumbnails/40.jpg)
八、 Pass by value ( 傳值 )
• 根據 pass by value ,當呼叫 aMethod(obj) 時,表示將 obj 物件變數的 stack 的內容值 傳給 aMethod() 方法參數列中的 o 物件變數
0xabcobj
o Java SCJP 5.0
0xabc0xabc
![Page 41: Java 語言基礎三 Java 運算元、 Pass by value 、 jar 的應用](https://reader033.fdocuments.net/reader033/viewer/2022061506/56813def550346895da7c7fe/html5/thumbnails/41.jpg)
課程大綱.壹 Java 的運算元
貳. 算數運算元 (Arithmatic Operator)參. 關係運算元 (Relational Operator)肆. 邏輯運算元 (Logic Operator)伍. 指定運算元 (Assignment Operator)陸. 三元運算元 (Ternary Operator)
.柒 Java 運算元的優先順序
.捌 Pass by value ( 傳值 )
.玖 JAR file 的應用
![Page 42: Java 語言基礎三 Java 運算元、 Pass by value 、 jar 的應用](https://reader033.fdocuments.net/reader033/viewer/2022061506/56813def550346895da7c7fe/html5/thumbnails/42.jpg)
九、 JAR file 的應用 • JAR ( Java Archive )• 就是負責管理 Java classes 檔案的壓縮工具,
將多個不同 package 下的多個 java classes 壓縮成一個 .jar 檔,以便於攜帶與部署。
• 在 \bin 目錄下提供了 jar.exe 工具來負責包裝與壓製。
• 在壓制的過程中預設使用 ZIP 壓縮格式。
![Page 43: Java 語言基礎三 Java 運算元、 Pass by value 、 jar 的應用](https://reader033.fdocuments.net/reader033/viewer/2022061506/56813def550346895da7c7fe/html5/thumbnails/43.jpg)
九、 JAR file 的應用• META-INF 目錄– 大多數 JAR 文件包含一個 META-INF 目錄,它
用於說明部署時的相關數據與信息,如安全性和版本信息。
– JavaSE 平台識別並解釋 META-INF 目錄中的文件,以便部署與配置應用程式,其文件包含:MANIFEST.MF :清單檔INDEX.LIST :索引資訊檔xxx.SF : JAR 文件的簽名文件。 xxx.DSA :與簽名文件相關聯的簽名程序塊文件,它存儲了用於簽名 JAR 文件的公共簽名。
![Page 44: Java 語言基礎三 Java 運算元、 Pass by value 、 jar 的應用](https://reader033.fdocuments.net/reader033/viewer/2022061506/56813def550346895da7c7fe/html5/thumbnails/44.jpg)
九、 JAR file 的應用• MANIFEST.MF 文件檔 • 這個 文件定義了以下常用的設定值:
Manifest-Version: 1.0 Manifest 的版本
Ant-Version: Apache Ant 1.6.1 Ant 的版本
Created-By: Vincent 創始人
Main-Class: com.MyForm 主程式
Class-Path: 類別路徑
![Page 45: Java 語言基礎三 Java 運算元、 Pass by value 、 jar 的應用](https://reader033.fdocuments.net/reader033/viewer/2022061506/56813def550346895da7c7fe/html5/thumbnails/45.jpg)
九、 JAR file 的應用• 常見的 jar 工具用法、功能及命令:
-c 建立新的歸檔(歸檔指的就是 jar 檔)-t 列出歸檔的目錄-x 從歸檔擷取以命名的 ( 或全部 ) 檔案-u 更先現有的歸檔-v 在標準輸出中產生 verbose 輸出-f 指定歸檔檔名-m 包含來自指定 manifest 檔案的顯示資訊-0 不使用 ZIP 壓縮-M 不建立項目的 manifest 檔案-i 為指定的 jar 檔產生索引資訊-C 變更為指定的目錄並包含下列檔案
![Page 46: Java 語言基礎三 Java 運算元、 Pass by value 、 jar 的應用](https://reader033.fdocuments.net/reader033/viewer/2022061506/56813def550346895da7c7fe/html5/thumbnails/46.jpg)
九、 JAR file 的應用• jar 範例一:– 若要將 A.class 與 B.class 這二個類別檔案保存在名稱為 foo.jar 的歸檔中:
– jar -cvf foo.jar A.class B.class– c:建立新的歸檔。– v:在標準輸出中產生 verbose 輸出。– f:指定歸檔檔名 foo.jar 。
![Page 47: Java 語言基礎三 Java 運算元、 Pass by value 、 jar 的應用](https://reader033.fdocuments.net/reader033/viewer/2022061506/56813def550346895da7c7fe/html5/thumbnails/47.jpg)
九、 JAR file 的應用• jar 範例二:– 將 event 目錄下所產生的 classes 包裝成一個
可以直接執行的 MemberForm.jar 檔,並且使用自定的 MANIFEST.MF 檔案內容。
– jar –cvfm MemberForm.jar MANIFEST.MF event/*.*
– m:包含來自指定 manifest 檔案也就是 MANIFEST.MF 的顯示資訊。
![Page 48: Java 語言基礎三 Java 運算元、 Pass by value 、 jar 的應用](https://reader033.fdocuments.net/reader033/viewer/2022061506/56813def550346895da7c7fe/html5/thumbnails/48.jpg)
九、 JAR file 的應用• MANIFEST.MF 檔案內容
–注意在 : 後面要有半形空白:• 執行 jar 命令 + 相關參數!• 執行 MemberForm.jar (雙擊)
Manifest-Version: 1.0Ant-Version: Created-By: VincentMain-Class: event.MemberFormClass-Path:
![Page 49: Java 語言基礎三 Java 運算元、 Pass by value 、 jar 的應用](https://reader033.fdocuments.net/reader033/viewer/2022061506/56813def550346895da7c7fe/html5/thumbnails/49.jpg)
九、 JAR file 的應用