Microsoft PowerPoint - SE7ch03.ppt

Size: px
Start display at page:

Download "Microsoft PowerPoint - SE7ch03.ppt"

Transcription

1 第三章變數與運算式 課前指引在 Java 語言中, 資料以變數來加以儲存, 資料運算則是利用 Java 所提供的眾多運算子來處理資料 運算子與運算元將組合成運算式, 而運算式只要在結尾加上一個 ; 就形成了最簡單的單一敘述 章節大綱 3.1 變數與資料型態 3.2 資料輸入 3.4 資料型態的轉換 3.5 本章回顧 3.3 運算式 ( 運算子及運算元 ) 備註 : 可依進度點選小節

2 3.1 變數與資料型態 Java 的資料處理基本單位為 變數 在類別內的變數視為該類別的欄位 (fields) 而在方法內宣告的變數則為該方法的區域變數 (local variables) class aaa{ int a=0; //field public void bbb(){ int b; //local variable a=a+1; } public int bb() { int b; //local variable } public aaa() { int a=10; //local variable a=a+1; } } 變數的意義 變數代表在程式執行過程中可能會被改變的某個數值 俗話說, 這個世界唯一不變的就是 變, 換句話說, 我們所身處的世界是一個多變數的世界例如 : 全球人口數每天都不同, 受出生人口 死亡人口 意外事件發生率 甚至於季節條件等而變化 而其他的條件也都是一個不斷改變的變數 ( 也可能再受其他變數的影響 ) 程式的運作過程也是靠眾多變數的變化來完成工作的例如 : 一個計算長方形面積的程式, 至少就必須包含 3 個變數 : 長 寬 面積 如果長與寬都不能改變數值的話, 這個程式將只能解決某一個固定的小問題, 例如 : 只能固定計算長為 3 寬為 2 的長方形面積 因此, 若要程式具有較大的彈性解決更多的問題, 就必須將長 寬設為可接受使用者輸入數值的變數由於長與寬可以變動, 因此面積也必須是一個可以變動的變數 4

3 3.1.1 變數的意義 程式和真實世界不同之處在於程式內所有變數的變化都在程式設計師的預料之中, 例如程式設計師可以限制長與寬的上下限, 不允許出現負數等不合理的變化, 也能限制面積只受到長與寬的影響, 而不會被其他變數所影響 因此, 程式設計師可以透過掌握這些變數的變化, 完成最終程式所要求的目的 程式的運作主要是靠 CPU 與記憶體的合作來完成, 而程式中的變數將存放在記憶體 ( 實際運作時可能會被搬移到 CPU 的暫存器中 ) 因此, 以上面的範例來說, 在記憶體中, 就必須儲存長 寬 面積等 3 個變數 變數的意義 變數可宣告為類別的欄位或某一方法的區域變數 ( 還有其他種類的變數, 但暫時不討論 ), 我們假設有三種狀況 : Case1: 我們想要長期保留長 寬及面積三個變數 解 : 我們可以先將長方形宣告為類別, 然後將長 寬及面積都宣告為長方形類別的變數 ( 即該類別的欄位 ) 如此一來, 這三個變數就屬於該類別所有, 依照其保護等級也可以限制不能被其他類別使用 但該類別所屬的方法可使用這三個變數因此, 我們可以在該類別下宣告一個 computearea() 方法, 在該方法內實現讀入並設定長 寬兩個變數以及計算並設定面積變數 6

4 Case 1 public class aaa { public static void main(string[] args) { Rectangle Rect=new Rectangle(3.0,2.0); System.out.println("The arae is:" + Rect.computeArea()); } } class Rectangle { private double length=0.0, width=0.0, area; public Rectangle(double a, double b){ //constructor length=a; width=b; } public double computearea() { area=length*width; return area; } } 變數的意義 Case2: 解 : 我們只想要保留面積變數 我們可以先將長方形宣告為類別, 然後將面積宣告為長方形類別的變數 ( 即該類別的欄位 ), 並在該類別下宣告一個 computearea() 方法 然後在 computearea 方法內宣告長 寬兩個區域變數 並於方法內設定長 寬變數後, 計算並設定面積變數, 然後結束 computearea() 方法 當 computearea() 方法結束時, 長 寬兩個區域變數所佔用的記憶體將會被釋放, 但面積由於屬於類別的欄位, 因此不會被釋放而得以保留下來 8

5 Case 2 public class aaa { public static void main(string[] args) { Rectangle Rect=new Rectangle(); System.out.println("The arae is:" + Rect.computeArea()); } } class Rectangle { private double area; public Rectangle(){ // constructor } public double computearea() { double length=3.0, width=2.0; area=length*width; return area; } } 變數的意義 Case3: 解 : 我們並不想保留任何變數, 純粹只是要測試 Java 的 = 與 * 運算子功能 我們並不需要宣告任何特定類別, 只要在主類別的 main 方法中宣告長 寬及面積三個區域變數即可並在 main 方法中設定長 寬的變數值, 然後透過運算式計算出面積變數的值即可 由於我們尚未介紹類別等物件導向程式設計, 因此在本章中, 我們都將採用這個案例來解說 10

6 Case 3 public class aaa { publicstaticvoidmain(string[] args) { double length=3.0, width=3.0, area; System.out.println("The arae is:" + length*width); } } 變數的命名 變數的命名原則 在第二章已經詳述 例如我們可以將長 寬 面積等命名為 length,width,rectarea 12

7 3.1.3 變數的宣告 Java 語言規定, 任何變數使用前必須先宣告 為了方便起見, 一般我們會把區域變數的宣告放在方法的開始處, 而其他的運算則放置於變數宣告之後 這樣做的好處在於容易管理, 並且由於變數一開始就宣告了, 因此後面的運算敘述可以直接取用 宣告變數時, 必須宣告該變數的資料型態 Java 的資料型態分為原始資料型態 (primitive type) 與非原始資料型態 (non-primitive type) 兩類 在本章中, 我們將以原始資料型態為主來宣告變數 變數的宣告 圖 3-1 Java 的所有資料型態 14

8 3.1.3 變數的宣告 以原始資料型態宣告變數時, 變數的宣告應該以最適當的資料型態為主 宣告不適當的資料型態可能無法負擔未來變數的變化, 或者浪費記憶體空間 int a=2,b=3; double c; c=a+b; 此外, 不適當的變數宣告, 可能導致資料處理結果並非預期想要的結果 變數的宣告 舉例來說, 若 X 為 int 資料型態 ( 整數 ),Y 為 float 資料型態 ( 浮點數, 也就是小數 ), 經過以下運算後, 會得到不同的結果 X = 20/5 = 4 Y = 20/5 = 4 X = 20/6 = 3 Y = 20/6 = 這是因為在做數學運算時, 整數變數無法儲存小數的數值, 因此 X 計算結果與預期有所差距 老師的叮嚀 上述範例中的 Y 變數之記憶體內容不可能存放真實的 20/6 之結果, 這是因為記憶體的長度有限, 不可能完整表達無理數及循環小數 因此, 使用電腦計算無理數 ( 例如圓周率 ) 時常會發生誤差, 但這些誤差在一般應用時是可接受的, 而在特殊應用狀況下 ( 例如航太工業 ), 則必須透過數值方法等更特殊的程式技巧來減少誤差範圍 16

9 3.1.4 原始資料型態 原始資料型態名稱 宣告 佔用位元組 說明 位元組 byte ~ 127 之整數 短整數 short 2-32,768 ~ 32,767 整數 int 4-2,147,483,648 ~ 2,147,483,647 長整數 long 8-9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807 字元 char 2 16-bit Unicode 字元最小值為 '\u0000' ( 或 0) 最大值為 '\uffff' ( 或 65,535) 布林 boolean 1 true 或 false 單倍精準度浮點數 雙倍精準度浮點數 float 4 double 8 採用 32-bit IEEE 754 浮點數格式精確位數為 7 位, 在正數方面可表達 3.4E-38~3.4E+38 (E 後面的數字代表 10 的次方數 ) 採用 64-bit IEEE 754 浮點數格式精確位數為 15 位, 在正數方面可表達 1.7E-308~1.7E+308 (E 後面的數字代表 10 的次方數 ) 表 3-1 Java 的原始資料型態 原始資料型態 當我們使用以 " 包裝眾多字元時, 稱之為字串 但字串並非 Java 的原始資料型態 在 Java 中, 字串是以物件方式存放 而該物件所屬的類別為 java.lang.string 類別由於字串的使用率極高, 故我們將於 節介紹字串 18

10 3.1.4 原始資料型態 整數資料型態 (byte,short,int,long) 整數資料型態可用來代表正負整數 在 Java 程式中的整數, 可以宣告為 4 種資料型態, 分別是 byte,short,int,long, 可表示的數值範圍如表 3-1 所列 其中最常使用的是 int 當數值過大 int 不足以記錄時, 則可以使用 long 來宣告而 short 則是為了節省記憶體時使用 至於 byte 則因為所能表達的範圍實在很小, 通常較少使用, 但由於非常節省記憶體空間, 因此若搭配陣列使用的話, 則可以大幅減少記憶體需求 原始資料型態 浮點數資料型態 (float,double) 浮點數是可包含小數的正負數值, 分為單精準度與雙精準度兩種, 宣告使用的關鍵字分別為 float 與 double 浮點數資料型態在 IEEE 協會已經制定了固定規格, 而 Java 語言也依照該規格來設計 float 資料型態 float 資料型態的變數佔記憶體 4 個位元組 (32 位元 ), 精確位數為 7 位, 在正數方面可表達 3.4E- 38~3.4E+38(E 後面的數字代表 10 的次方數 ) 在顯示浮點數資料時, 通常會分為小數表示法與科學記號表示法 當數值的絕對值很大或很小 ( 接近 0) 的時候, 通常會用科學記號來表示 20

11 3.1.4 原始資料型態 經宣告為 double 資料型態的變數將佔用記憶體 8 個位元組 (64 位元 ), 精確位數則為 15 位, 在正數方面可表達 1.7E-308~1.7E+308 double 資料型態同樣可接受科學記號的表示方法 小數點表示法 科學記號表示法 E e e+02 float num4=2.63e64; float num3=2.478f; double num2=-6.32e16; double num1=-5.6e64; 延伸學習 : 實數為何稱為浮點數呢? 整數資料的小數點, 固定 在最右邊的位元之後, 而浮點數表示法的小數點位置則必須由數值與精確度來決定 ( 小數點位置是 浮動 的, 因此稱為浮點數表示法 ) 原始資料型態 布林資料型態 (boolean) 布林資料型態的變數只能存放 真 (true) 或 假 (false) 兩種值通常在條件判斷時, 我們常使用布林資料型態的變數 然而某些運算式的結果若為布林值, 此時也可以將運算式的結果存放在布林資料型態的變數中 boolean a; a=(3>2); /* a=true;*/ 字元資料型態 (char) char 稱為字元資料型態, 可以用來儲存單一字元在 Java 語言中, 由於使用 Unicode 來表示字元, 因此每個字元資料型態佔用記憶體 2 個位元組 (16 位元 ) 22

12 3.1.4 原始資料型態 字元資料型態 (char) 在 Java 中指定 Unicode 字元, 可以直接以 ' 包裝可列印字元, 例如 :'H' 等也可以使用數值方式指定字元的 Unicode 之十進位數值, 例如 :72 使用數值方式指定字元的 Unicode, 除了可以使用十進位來設定之外, 可以透過二進位 八進位 十六進位等常數來指定, 格式分別為 0btttttttt 0ddd 0xhhhh 例如以數值 0b ( 二進位 ) 0110( 八進位 ) 0x0048( 十六進位 ) 設定字元內容時, 這三種表示法代表的都是字元 H ( 英文字母的 Unicode 詳見附錄 C) 註 : 二進制表達整數是 JDK7 才支援的功能 原始資料型態 public class aaa { public static void main(string[] args) { char a,b,c,d,e; a='h'; b=72; c=0x48; d=0110; e=0b ; System.out.println("a is:" + a+ ", b is: "+ b+" c is: "+c+" d is: "+d+" e is: "+e); } } 24

13 3.1.4 原始資料型態 字元資料型態 (char) 可列印的字元可以使用以上幾種方式指定, 但要指定不可列印的跳脫字元 (Escape sequence character) 時, 則還可以搭配特殊符號 \ 來表達 例如 \n 代表換行的跳脫字元, 能夠使得螢幕游標跳到下一行 常用的跳脫字元如表 3-2 所列 至於使用數值方式指定跳脫字元, 則仍只需要指定 Unicode 對應的數值即可 原始資料型態 跳脫字元 效果 \' 單引號 ' \" 雙引號 " \\ 反斜線符號 \ \a 響鈴 (Bell) \n 換行 (Newline) \b 退格一格 (Backspace) \t 水平跳格, 與 tab 鍵作用相同 (Tab) \f 通知印表機, 資料由下一頁開始列印 (Format) \r 回到該行第一格 (Carriage Return) \ddd 8 進制數字指定 Unicode( 例如 'H' 可表示為 '\110') \uhhhh 16 進制數字指定 Unicode( 例如 'H' 可表示為 '\u0048') 表 3-2: 跳脫字元表 26

14 3.1.4 原始資料型態 public class aaa { public static void main(string[] args) { System.out.println("aaa"); System.out.println("\""+ "\n"); System.out.println("bbb "+"\\"); } } 變數的宣告語法及範例 宣告原始資料型態變數的基本語法如下 : 原始資料型態變數 1, 變數 2, ; 範例 : int x,y; // 宣告 x,y 為整數變數 boolean k; // 宣告 k 為布林變數, float p; // 宣告 p 為單精準度浮點數變數 double q; // 宣告 q 為雙精準度浮點數變數 char c; // 宣告 c 為字元變數 28

15 3.1.5 變數的宣告語法及範例 說明 您可以將資料型態當作一種製作箱子的模子 模子可用來製作變數或常數 不同種類的模子製作出來的箱子只能放入特定種類的資料 如果硬要放進不合規定的資料, 則可能無法通過編譯, 或者資料在放入後箱子後, 可能會發生變形而喪失原本的完整資訊 圖 3-2 變數宣告示意圖 變數的宣告語法及範例 原始資料型態變數宣告並設定初始值的基本語法如下 : 原始資料型態變數 1= 初始值 ; 範例 : int x=2,y=5; // 宣告整數變數 x=2,y=5 boolean k=false; // 宣告布林變數 k=false float p=3.237; // 宣告單精準度浮點數變數 p=3.237 char c='r'; // 宣告字元變數 c='r', 單一字元需透過 ' 包裝 30

16 3.1.5 變數的宣告語法及範例 圖 3-3 變數宣告並放入初始值示意圖 常數 在前面我們曾說, 這個世界唯一不變的是 變, 其實並不準確因為如同股市指數可能於開市時, 隨時都在變化但光速 圓周率等則永遠不會變化 在程式中, 同樣有一些不會變化的數值, 例如 等, 它不論程式執行到何處都不會產生變化 ( 除非硬體故障 ) 這些不會變化的數值稱為常數 在上一小節的範例中, 我們指定變數的初始值時, 都將之指定為常數 例如 2,5,3.237,false,'r' 等等, 換言之, 常數在 Java 中也應該有其資料型態的分別字元與布林常數和其他語言沒有太大的差別, 但對於整數及浮點數,Java 語言有其特別規定 對於一個未指定資料型態的整數常數而言,Java 將之視為 int 資料型態, 所以下列語法是錯誤的 : long bignum= ; // 錯誤, 因為常數超過 int 整數範圍 32

17 3.1.6 常數 如果要將整數常數指定為 long 型態的範圍, 則必須在後面加上 L 或 l 以作為標示, 一般都採用大寫 L 來標示, 如下範例 : long bignum= l; // 正確, 可通過編譯 對於一個未指定資料型態的浮點數常數而言, Java 將之視為 double 資料型態 常數 不過我們也可以直接指定為 float 單倍精準度浮點數資料型態, 只要在其後加上 f 或 F 即可同樣地, 若在後面加上 d 或 D 則代表該常數為 double 雙倍精準度浮點數資料型態, 如下範例 float p1=5.3f; //5.3 為 float 單倍精準度浮點數資料型態 float p2=2.0f; //2.0 為 float 單倍精準度浮點數資料型態 double p3=7.532d; //7.532 為 double 雙倍精準度浮點數資料型態 double p4=6.0d; //6.0 為 double 雙倍精準度浮點數資料型態 34

18 3.1.6 常數 常數代碼 由於各種資料型態有其範圍限制, 而一般人並不容易記憶其邊界值, 但在許多狀況下, 為了避免溢位的發生, 通常會在程式中, 檢查數值是否已達資料型態的範圍極限 因此,Java 將這些常數數值記錄於 java.lang 類別庫的各類別中, 使用者可以直接取用該代碼以代表各數值 事實上, 這些代碼就是類別變數 (Class Variable), 因此可以直接透過指定類別來存取, 而不需要宣告物件實體, 各常數代碼如表 3-3 所列 : 常數 byte short 隸屬類別 java.lang.byte java.lang.short 最大值 MAX_VALUE 127 MAX_VALUE 32,767 最小值 MIN_VALUE -128 MIN_VALUE -32,768 int long 隸屬類別 java.lang.integer java.lang.long 最大值 MAX_VALUE 2,147,483,647 MAX_VALUE 9,223,372,036,854,775,807 最小值 MIN_VALUE -2,147,483,648 MIN_VALUE -9,223,372,036,854,775,808 float double 隸屬類別 java.lang.float java.lang.double 正數最大值 MAX_VALUE E38 MAX_VALUE E308 正數最小值 MIN_VALUE 1.4E-45 MIN_VALUE 4.9E-324 float a=float.max_value; double b=double.max_value; 表 3-3 常數代碼 36

19 3.1.6 常數 延伸學習 : 溢位當某個變數的大小超過所能表示的範圍時, 將會產生溢位, 此時, 變數內容將不是一般預期的結果 例如宣告為 short 的變數 a 若已經為 32,767( 記憶體內容為 ), 則再將 a 加 1 之後, 就會發生溢位 ( 它將會是 而非 , 原因是 32,768 的 2's 補數表示法恰為 ) 整數常數的特殊表示法整數常數除了使用十進制數值表示之外, 也可以使用二 八 十六進制數值來表示 除此之外, 相對於商用數值的千位數, 分段符號, 也可以改為 _ 符號來取代, 範例如下 : 常數 範例 : int i=0b ; // 宣告並設定變數 i=3, 二進制表示是 JDK7 新功能 int j=079; // 宣告並設定變數 j=72(72 的八進位表示為 79) int k=0x64; // 宣告並設定變數 k=100(100 的十六進位表示為 64) int z = 1_000_000; ( 商用數字, 底線替代,) // 宣告並設定變數 z= , 加底線是 JDK7 新功能 38

20 3.1.7 原始資料型態變數的預設值 如果宣告變數時, 沒有給定變數的預設值, 則 Java 語言規定變數的預設值為 0 或 false, 如表 3-4 所列 延伸學習 : 變數的預設值 事實上, 並非所有的程式語言都會自己設定變數的預設值, 例如 C/C++ 就沒有此機制, 而在 C/C++ 中如果讀取沒有設定預設值的變數時, 讀取到的將會是記憶體之前殘留的數值, 這可能會因程式設計師的疏忽而造成程式的錯誤 不過, 在 Java 中並不存在這樣的問題 原始資料型態名稱 預設值 byte (byte)0 short (short)0 int 0 long 0L char '\u0000' boolean false float 0.0f double 0.0d 表 3-4 註 : String 或其他各類物件的預設值則為 null Java 的原始資料型態變數預設值 原始資料型態變數的預設值 圖 3-4 變數宣告未設定初始值示意圖 40

21 3.1.8 不會變動的變數 現實世界中的常數是不會變動的一個值, 有它本身的意義 ( 例如圓周率 光速 ) 一般而言, 為了彼此的溝通, 我們會替該數值取一個符號 例如圓周率是一個不會變動的數值, 而我們在數學中會以 π 來代表 符號在程式中是以變數方式來出現, 如果這個變數的值在程式中不會產生異動, 我們可以將之宣告為不會變動的變數, 其語法如下 : final 原始資料型態變數 = 常數值 ; 語法說明 將變數宣告為 final, 則變數一經設定初始的常數值後, 就不允許再被修改 因此, 我們可以將程式中, 不需改變的常數使用此法來宣告 如下範例 : final float pi=3.1416f; final float rate=0.0325f; 不會變動的變數 說明 : pi 是圓周率, 一般來說, 是一個固定值且為無窮小數 而 rate 可能是做為利率, 若在計算貸款 存款的程式中, 可能使用於許多公式中 為了統一管理起見, 可以將之宣告為不會變動的變數, 如果程式想要修改該值時 ( 例如利率調整或增加圓周率的精確度 ), 只要在宣告處修改數值即可, 而不必在使用該數值的程式各處一一修改該值 圖 3-5 final 變數宣告並放入初始值示意圖 42

22 3.1.8 不會變動的變數 對於區域變數而言, 宣告 final 變數可以在宣告時不設定初值, 而留待後面才設定初值, 但一旦設定初值之後, 就不能再改變其值 如下範例 : final float rate; rate=0.0325f; rate=0.028f; // 本行程式碼錯誤,final 變數不可以設定兩次以上的值 延伸學習 :final 的多用途性 final 關鍵字除了上述功能之外, 在類別的繼承時, 也可以用來終止類別的繼承 我們將於後面章節中再做說明 字串 字串雖然不是原始資料型態的一種, 但卻經常被使用 例如 : 在 Java 程式中, 不論是讀取使用者於鍵盤輸入的資料, 或檔案中的資料, 所讀取到的都是字串格式 即使內容為數值, 也會被當作字串來處理 有鑑於此, 我們特將字串提前至此節中加以說明 宣告字串物件 在 Java 中使用字串, 必須透過 String 類別來處理, 類別的實體變數 稱之為 物件, 因此要存放字串, 必須使用 String 物件來存放 其語法有下列幾種 : 44

23 3.1.9 字串 一 使用建構函式 ( 建構子 ) String 字串物件名稱 = new String( 初始值 ); 說明 : 此法可同時設定字串的初始值, 如果初始值要設定為空字串, 則 ( ) 內為空即可 建構函式是 當該物件生成時, 會自動執行的方法, 我們將於後面章節中介紹, 而其中的初始值, 則為傳遞給建構函式的引數 字串 二 用原始資料型態的配置語法 或 String 字串物件名稱 ; String 字串物件名稱 = 初始值 ; 說明 : 此法可設定或不設定字串的初始值 46

24 3.1.9 字串 設定字串值 由宣告語法可知, 設定字串物件內的字串值, 可以直接使用 = 來指定即可, 如下範例 : String str1 = new String ("This is str1"); String str2 = new String(); String str3 = "This is str3"; String str4; str1="this is new str1"; str2="this is str2"; str3="this is new str3"; str4=str3; 字串 說明 上面的敘述執行完畢時,str1~str3 所代表的字串內容為最後設定的狀況, 而 str4 與 str3 實際上使用相同的字串物件 ( 內容當然也相同 ) 值得注意的是, 雖然上述的語法都可以宣告字串物件並設定字串內容, 但實際上背後的運作則有一些差異, 我們將於第 11 章再深入介紹 延伸學習 : 字串常數當程式中出現了字串常數, 則一定會產生一個 String 物件以存放其內容, 並且 Java 採用 String Pool 及自動記憶體回收機制有效管理眾多字串常數 ( 我們將於第 11 章詳述 ) 48

25 3.1.9 字串 字串的內容 在 Java 中, 字串以類別來宣告, 以物件方式呈現, 而字串由於是由字元所組成, 因此, 字串的內容事實上是存放在 char[] 型態的字元陣列中, 該字元陣列則為 String 類別的成員變數 由於讀者目前尚未建立陣列的觀念, 因此留待後面章節再做說明 資料輸入 在第二章時, 我們已經知道螢幕輸出可以透過 System.out 所屬類別的 print 或 println 方法來完成, 而如果要讀入使用者由鍵盤輸入的資料, 則比較複雜 一般而言, 有 java.io.bufferedreader 類別與 java.io.console 類別可完成此項工作 由於 BufferedReader 類別會牽涉到例外的語法因此在本章中, 我們將以 Console 類別來示範 50

26 3.2 資料輸入 JDK6 提供了新的類別 java.io.console, 它主要是針對標準輸出入裝置所設計, 可以透過它取得使用者在文字模式 (console mode) 下的鍵盤輸入 使用 Console 物件讀取鍵盤輸入的格式如下 : 資料輸入 import java.io.console; public class 主類別名稱 { public static void main(string args[]) 我們將透過此物件讀取鍵盤的輸入 { Console console=system.console(); String str1; 讀入一行輸入的文字, 並存入 str1 字串中 str1=console.readline()... 其他程式碼... } } 說明 : 由於要使用 java.io.console 類別, 因此透過 import java.io.console; 載入類別 當然您也可以寫為 java.io.* 一次載入所有屬於該類別庫下的類別 console 是 Console 類別的物件 ( 當然您也可以取其他的物件名稱 ) 其方法 readline 會回傳鍵盤輸入的一行資料給字串 因此, 我們使用字串物件 str1 來接收這些資料 52

27 3.2 資料輸入 範例 3-1:ch3_01.java( 隨書光碟 myjava\ch03\ch3_01.java) /* 檔名 :ch3_01.java 功能 : 鍵盤輸入範例 */ package myjava.ch03; import java.lang.*; import java.io.console; public class ch3_01 // 主類別 { public static void main(string args[]) { Console console=system.console(); String str1,str2; } } System.out.print(" 請輸入第一個字串 :"); str1 = console.readline(); System.out.print(" 請輸入第二個字串 :"); str2 = console.readline(); System.out.println(" 您所輸入的字串如下 :"); System.out.println(str1); System.out.println(str2); 資料輸入 執行結果 : 範例說明 : 請輸入第一個字串 :This is String 1 請輸入第二個字串 :This is String 2 您所輸入的字串如下 : This is String 1 This is String 2 第 11 行是宣告並產生物件實體 console, 第 15 行與第 17 行則是透過物件的 readline 方法取得鍵盤輸入的一行字串 Coding 注意事項 記住還要去掉 package 那一行!! 如果您想要在 Eclipse 中開發包含主控台 (Console) 輸入的 Java 程式, 則無法使用 Console console=system.console(); 產生 console 物件, 這是因為 Eclipse 並未完整將 JDK6 的 java.io.console 類別實作並整合到 IDE 之中, 而必須改為使用 JDK5 以前的機制, 由於牽涉到例外處理的機制, 為不影響讀者學習進度, 因此請讀者自行參閱附錄 B.8 節的做法來解決這個問題 54

28 3.2 資料輸入 密碼輸入 java.io.console 類別對於密碼輸入也提供了簡單 readpassword() 方法, 其使用語法如下 : 字元陣列 =console.readpassword( 提示字串 ); 說明 : 提示字串可以填入您想要在輸入密碼前出現的字串, 由於該方法被 多載 定義, 故也可以省略該字串, 改用 System.out.print 輸出提示字串 請見範例 3-2 延伸學習 : 多載 (overloading) 多載代表可在呼叫方法時, 提供不同種類 數量的引數, 我們會在第六章詳述多載技術 資料輸入 範例 3-1b:ch3_02.java( 隨書光碟 myjava\ch03\ch3_02.java) /* 檔名 :ch3_02.java 功能 : 鍵盤輸入範例 - 不顯示輸入字元 */ package myjava.ch03; import java.lang.*; import java.io.console; public class ch3_02 // 主類別 { public static void main(string args[]) { Console console=system.console(); char[] inputpw; // 宣告字元陣列 } } inputpw = console.readpassword(" 請輸入密碼 :"); System.out.println(" 您所輸入的密碼如下 :"); System.out.println(inputPW); 56

29 3.2 資料輸入 執行結果 : 實際上按下了 123, 但不會顯示出來 請輸入密碼 : 您所輸入的密碼如下 : 123 範例說明 : (1) 由於 readpassword 方法的回傳值為字元陣列, 故在第 12 行宣告字元陣列 inputpw, 詳見陣列一章 (2) 第 14 行的提示字串為 " 請輸入密碼 :" (3) 第 16 行的 System.out.println 也可以輸出字元陣列 (4) 執行結果中, 我們實際上輸入了密碼字元 123, 但螢幕並不會顯示出來, 若非我們在第 16 行將之列印出來, 則外人無法得知我們輸入的密碼為何, 因此具有保密特性 資料輸入 延伸學習 :printf 事實上,java.io.Console 類別也提供了輸出的方法 printf(), 對於 C 熟悉的讀者可以試試看, 例如 :console.printf(" 字串為 :"+str1+"\n");, 不過由於過去多數人已經習慣使用 System.out.println 來輸出並且也很簡單, 因此, 我們並不打算使用 Console 來進行輸出 使用 Console 來輸入資料的原因, 則是它比較簡單, 並且不用考慮到例外的處理 Q: 若是我們希望從鍵盤讀到輸入的是整數的話, 怎麼辦? A: See P.111 範例 58

30 3.3 運算式 ( 運算子及運算元 ) 程式的目的是解決問題, 而手段則是依靠各個變數值的改變, 想要變更變數值就必須透過運算式 (Expression) 加以完成 運算式是由運算元 (Operand) 與運算子 (Operator) 共同組成, 常見的數學公式就是最基本的運算式, 例如 :area=r*r*3.14 其中的 r 3.14 就是運算元而 = * 就是運算子 運算式 ( 運算子及運算元 ) Java 提供了許多的運算子, 並且允許運算元為一個或多個的 常數 變數 函式呼叫敘述 或甚至是 其他運算式 的組合, 只要運算結果為單一個值的都可以作為運算元 在本節中, 我們將說明 Java 所提供的各類運算子 60

31 3.3 運算式 ( 運算子及運算元 ) 運算式與敘述敘述是 Java 程式中, 一個完整執行的單元 下列的運算式, 只要加上結尾 ;, 即可成為運算式敘述 1. 指定運算式 例如 a=7 2. 使用遞增遞減 (++ 或 --) 的運算式 例如 :a++ 3. 方法的呼叫 例如 :System.out.println("Hello World!") 4. 建立物件的運算式 例如 :String str1 = new String ("This is str1") 運算式 ( 運算子及運算元 ) 運算式與敘述除了運算式敘述之外,Java 還有下列其他種類的敘述 (1) 宣告敘述, 例如 :int a; 或 int a=8; (2) 流程控制敘述 ( 請見下一章 ) 62

32 3.3 運算式 ( 運算子及運算元 ) 敘述與區塊 區塊是由 0 個以上的敘述所組成, 又可以稱之為敘述區塊, 它以 { 為開頭, } 為結尾區塊可以出現在單一敘述可出現之處 ( 故您也可以將區塊當作敘述的一種, 稱之為區塊敘述 ), 以作為一個較大單元的執行區塊 = 設定運算子 = 運算子是最常見的運算符號作用是將符號右邊的運算式計算後的值指定給左邊的變數稱為設定運算子或指定運算子 格式 : 變數 = 運算式 ; 範例 : a = 10; b = 'w'; c = p + q; str1 = console.readline(); 10 = x + 40; // 錯誤, 左邊不可以是數值 f(h) = 15; // 錯誤, 左邊不可以是函式 x + y = z; // 錯誤, 左邊不可以是複合運算式 說明 : = 運算子的左邊只能有也必須有唯一的一個變數, 不能是數值 函式 其他的複合運算式 64

33 3.3.1 = 設定運算子 Coding 注意事項 在 Java 語言中, = 的意義為指定或設定, 與數學上的相等有些許不同, 對於 Java 而言, 相等代表一種比較, 因此必須使用比較運算子的 == 符號 老師的叮嚀 雖然 = 運算子為運算式中最常見的運算子, 但並非所有的運算式都必須包含 = 運算子, 例如 :a++ 也是一個運算式, 但卻不必使用 = 符號 此外, 運算式是一種遞迴式的定義, 也就是運算式可以做為其他更大的運算式的某一個運算子, 例如 :z=x+y 其中 x+y 是一個運算式, 而 z=x+y 也是一個運算式, 並且 x+y 為 = 運算子的運算元 算術運算子 算術運算子可用來做數學的運算,Java 提供的算術運算子共有 5 種 : + - * / %, 如下表所列 : 算術運算子 使用範例 說明 + a + b a 加 b - a - b a 減 b * a * b a 乘 b / a / b a 除以 b % a % b 取 a 除以 b 的餘數 + 運算子也可以使用在字串的連結喔 ~ 66

34 3.3.2 算術運算子 範例 3-3:ch3_03.java( 隨書光碟 myjava\ch03\ch3_03.java) /* 檔名 :ch3_03.java 功能 : 算術運算子範例 */ package myjava.ch03; import java.lang.*; public class ch3_03 // 主類別 { public static void main(string args[]) { float answer; float a=2.1f,b=3.5f,c=4.0f; int x,y; x = 20; y = 7; System.out.print(" 當 x=" + x + " "); System.out.println("y=" + y + " 時 "); System.out.println("x + y = " + (x+y)); System.out.println("x - y = " + (x-y)); System.out.println("x * y = " + (x*y)); System.out.println("x / y = " + (x/y)); y 不可為 0 System.out.println("x % y = " + (x%y)); System.out.println(" "); System.out.print(" 當 a=" + a + " "); System.out.print("b=" + b + " "); 算術運算子 System.out.println("c" + c + " 時 "); answer = b*b-4*a*c; System.out.println("b^2-4ac=" + answer); } } 執行結果 : 當 x=20 y=7 時 x + y = 27 x - y = 13 x * y = 140 x / y = 2 第 20 行的輸出 x % y = 當 a=2.1 b=3.5 c4.0 時 b^2-4ac=

35 3.3.2 算術運算子 範例說明 : (1) 第 20 行, 由於 x y 都是整數資料型態, 因此 x/y 會被轉換成整數資料型態 ( 只能記錄整數部分 ) (2) 不論是做除法或取餘數時, 分母都不可為 0 而 20%7 的結果是餘數 6 (3)x*y 不可以簡寫為 xy, 這一點與數學不太一樣 (4) 第 26 行的運算式 answer=b*b-4*a*c 當中, 會先做 * 乘法, 再做 - 減法, 最後才是 = 指定 這是因為 * 號的運算子優先權比 - 號還高, 並且 - 號運算子優先權比 = 號還高的緣故, 詳細的各種運算子優先權, 請見 節如果您記不住所有的優先權, 又沒有資料或書籍可以查閱時, 可以將想要先做的部分運算式, 使用 () 小括號括起來即可 比較運算子 Java 提供的比較運算子有 ==!= > < >= <= 等六種 其運算結果為布林值, 也就是 true( 真 ) 或 false( 假 ) 所以比較運算子常用在條件判斷之用, 其餘比較運算子說明如下表所列 : 比較運算子 意義 使用範例 說明 = = 等於 x==y 比較 x 是否等於 y!= 不等於 x!=y 比較 x 是否不等於 y > 大於 x>y 比較 x 是否大於 y < 小於 x<y 比較 x 是否小於 y >= 大於等於 x>=y 比較 x 是否大於等於 y <= 小於等於 x<=y 比較 x 是否小於等於 y 70

36 3.3.4 邏輯條件運算子 邏輯條件運算子可以將布林資料 true 或 false 做某些運算 若將邏輯條件運算子與其他比較運算子搭配使用, 運算結果將仍然是布林值, 因此常被用來當做條件判斷之用 在 Java 中, 邏輯條件運算子共有 NOT AND OR 等 3 種, 其符號分別為! &&, 我們以真值表方式來加以介紹 邏輯條件運算子 (1)!(NOT)! 邏輯條件運算子是一個單元運算子, 只需要單一個運算元, 它會將緊接著的運算元的值給反相, 若輸入的值為 true, 輸出的值將為 false 反之, 輸入的值為 false, 輸出的值將為 true (2) &&(AND) X!X false true true false 真值表 :!X 當前後兩個運算元都是 true, 輸出才會是 X true, Y X 其餘的 && Y 各種情況都是輸出 false false false false 真值表 : X && Y false true false true false false true true true 72

37 3.3.4 邏輯條件運算子 (3) (OR) 當前後兩個運算元中只要有一個是 true, 輸出就會是 true, 只有當兩個運算元都是 false 時, 輸出才會是 false 真值表 : X Y X Y X Y false false false false true true true false true true true true 邏輯條件運算子 範例 3-4:ch3_04.java( 隨書光碟 myjava\ch03\ch3_04.java) /* 檔名 :ch3_04.java 功能 : 比較運算子與邏輯運算子範例 */ package myjava.ch03; import java.lang.*; public class ch3_04 // 主類別 { public static void main(string args[]) { int x=10,y=20; boolean a=true,b=false; System.out.print(" x=" + x); System.out.println(" y=" + y); System.out.println(" "); System.out.println("x==y ==> " + (x==y)); System.out.println("x!=y ==> " + (x!=y)); System.out.println("x>y ==> " + (x>y)); System.out.println("x<y ==> " + (x<y)); System.out.println("x>=y ==> " + (x>=y)); System.out.println("x<=y ==> " + (x<=y)); 74

38 3.3.4 邏輯條件運算子 } } System.out.println("===================="); System.out.print(" a=" + a); System.out.println(" b=" + b); System.out.println(" "); System.out.println("not a ==> " +!a); System.out.println("a and b ==> " + (a && b)); System.out.println("a or b ==> " + (a b)); System.out.println("a nand b ==> " +!(a && b)); System.out.println("a nor b ==> " +!(a b)); System.out.println("a and (x<y) ==> " + (a && (x<y))); 邏輯條件運算子 執行結果 : x=10 y= x==y ==> false x!=y ==> true x>y ==> false x<y ==> true x>=y ==> false x<=y ==> true ==================== a=true b=false not a ==> false a and b ==> false a or b ==> true a nand b ==> true a nor b ==> false a and (x<y) ==> true 範例說明 : (1) 第 16~21 行, 比較運算子的執行結果會回傳一個布林值 所以比較運算子常做為條件判斷之用 76

39 3.3.4 邏輯條件運算子 小試身手 3 1 (2) 在第 29~30 行中, 我們使用 3 種邏輯運算子, 完成更多樣的邏輯運算, 例如 :nand(not and) nor(not or) 您若不了解這些邏輯運算, 請參考計算機概論或邏輯設計的書籍 (3) 第 31 行, 由於 (x<y) 將會回傳布林值 true, 而 a 也為 true, 因此 a and (x<y) 的結果為 true 在往後的程式設計中, 當進行條件判斷時, 常常會出現關係比較運算子與邏輯運算子合作以完成所需的狀況 在範例 3 4 中, boolean a=true,b=false;, 請寫一個程式印出 a xor b 的結果 xor 為互斥運算, 其真值表如右, 當前後兩個運算元的值不相同時, 才會輸出 true 並且 a xor b 等價於 ((a &&!b) (!a && b)) a b a xor b 真值表 : a xor b false false false false true true true false true true true false 位元運算子 在位元運算方面,Java 提供七種位元運算子 透過這些運算子, 我們就可以只針對某些位元 (bit) 做運算處理, 不必像前面所介紹的運算子必須針對變數整體做運算 例如 :int 整數變數 x 在記憶體佔用 32 個位元 (4 個位元組 ) 長度, 若 x 為 1234, 則實際在記憶體中的內容如下 : 78

40 3.3.5 位元運算子 我們只要透過位元運算子, 就可以針對某一些位元單獨做運算, 進行更低階的資料處理 Java 提供的位元運算子如下表 位元運算子 意義 範例 說明 ~ 反相 ~x 將 x 的所有位元做 NOT 運算 & 且 x & y 將 x 與 y 相對應的位元做 AND 運算 或 x y 將 x 與 y 相對應的位元做 OR 運算 ^ 互斥 x^y 將 x 與 y 相對應的位元做 XOR( 互斥 ) 運算 >> 右移 x >> p 將 x 的內容往右移動 p 個 bit >>> 右移 x >>> p 將 x 的內容往右移動 p 個 bit( 左邊補 0) << 左移 x << p 將 x 的內容往左移動 p 個 bit( 右邊補 0) 位元運算子 註 :XOR( 互斥 ) 的真值表如下, 當前後兩個運算元的值不相同時, 才會輸出 1 真值表 : X ^ Y X Y X ^ Y 範例 3-5:ch3_05.java( 隨書光碟 myjava\ch03\ch3_05.java) 80

41 3.3.5 位元運算子 /* 檔名 :ch3_05.java 功能 : 位元邏輯及移位運算子範例 */ package myjava.ch03; import java.lang.*; public class ch3_05 // 主類別 { public static void main(string args[]) { short x=100,y=50,p=3; int xx=0; } } System.out.println("p=3"); System.out.println("x= "); System.out.println("y= "); System.out.println(" "); System.out.println("not xx ==> " + ~xx); System.out.println("x and y ==> " + (x & y)); System.out.println("x or y ==> " + (x y)); System.out.println("x xor y ==> " + (x ^ y)); System.out.println("x >>> p ==> " + (x >>> p)); System.out.println("x << p ==> " + (x << p)); 位元運算子 執行結果 : 範例說明 : p=3 x= y= not xx ==> -1 x and y ==> 32 x or y ==> 118 x xor y ==> 86 x >>> p ==> 12 x << p ==> 800 見範例說明 (4) (1) 第 10 行將 x,y 宣告為 short 整數資料型態, 所以變數長度為 2 個位元組 因此 x=100= y=50=

42 3.3.5 位元運算子 範例說明 : (2) 範例執行結果為何出現這些數字呢? 請見以下的實際運算 位元運算子 範例說明 : (3) 善用左移位元符號 << 可以將數值做 2 的倍數乘法, 例如 :100 左移 3 個位元得 800, 也就是 =800 (4)xx 被宣告為 int 整數資料型態, 佔用 4 個位元組 由於宣告時指定初值為 0( 事實上, 不指定也可以, 因為 int 資料型態的預設值為 0) 因此記憶體為 當透過 ~ 取反相時, 結果為 , 以 2's 補數來看待, 則為 -1 84

43 3.3.6 複合式指定運算子 Java 除了簡單的指定運算子 = 之外, 還提供另一種同時具有運算及指定功能的複合式指定運算子 (compound assignments), 此類運算子有很多, 如下表所列 複合式指定運算子使用方法功能等同於 += i += j; i = i + j; -= i -= j; i = i - j; *= i *= j; i = i * j; /= i /= j; i = i / j; %= i %= j; i = i % j; = i = j; i = i j; &= i &= j; i = i & j; ^= i ^= j; i = i ^ j; >>= i >>= j; i = i >> j; <<= i <<= j; i = i << j; 遞增與遞減運算子 Java 提供兩個特別的運算符號 : 遞增符號 ++ 遞減符號 - - 遞增符號會將運算元的內容加 1 遞減符號會將運算元的內容減 1 遞增與遞減運算子使用方法功能等同於 a++; ++a; a--; --a; a = a + 1; a = a - 1; 86

44 3.3.7 遞增與遞減運算子 ++ 和 -- 可以放在運算元的後面, 也可以放在運算元的前面 放在運算元後面時, 代表要做前置運算, 如 :i ++ 放在運算元前面時, 代表要做後置運算, 例如 :++i 兩種運算的意義不同, 分述如下 : 前置運算 ( 例如 :i++): 運算元先進行其他運用, 再進行加一或減一的動作 後置運算 ( 例如 :++i): 運算元先進行加一或減一的動作, 再進行其他運用 範例 3-6:ch3_06.java( 隨書光碟 myjava\ch03\ch3_06.java) 遞增與遞減運算子 /* 檔名 :ch3_06.java 功能 : 遞增遞減運算子範例 */ package myjava.ch03; import java.lang.*; public class ch3_06 // 主類別 { public static void main(string args[]) { int i=5,j=10,a,b; int x=5,y=10,c,d; 先執行 a=1+i 然後再執行 i=i+1 a = 1+ i++; b = 1+ j--; c= 1+ ++x; 先執行 x=x+1 再執行 c=c+x d= 1+ --y; } } System.out.print("i = " + i); System.out.print("\t j = " + j); System.out.print("\t x = " + x); System.out.println("\t y = " + y); System.out.print("a = " + a); System.out.print("\t b = " + b); System.out.print("\t c = " + c); System.out.println("\t d = " + d); 88

45 3.3.7 遞增與遞減運算子 執行結果 : 範例說明 : i = 6 j = 9 x = 6 y = 9 a = 6 b = 11 c = 7 d = 10 (1) 雖然 i,j,x,y 的執行結果都各自遞增或遞減 1 了, 但由於將 ++ 與 -- 放在不同位置, 所以 a,b,c,d 的執行結果並不相同 第 13 行是先執行 a=1+i 然後再執行 i=i+1, 所以 a=6 i=6 而第 15 行程式, 則是先執行 x=x+1 再執行 c=c+x, 所以 x=6 c=7 第 行也是相同的道理 (2) 另外, 讀者會發現 c=1+ ++x 若刪除空白並且將 1 也用變數取代時, 讀者可能會對於運算結果產生疑惑, 例如 : c=p+++q, 到底是 c=p+(++q) 還是 c=(p++)+q 呢? 這其實和運算子的優先權有關, ++ 的運算子優先權比 + 優先權還高, 因此,c=p+++q 相當於 c=(p++)+q (3) 在輸出結果時, 我們使用了 \t 跳脫字元來對齊資料, 它相當於按下 <Tab> 鍵的效果 其他的單元運算子 除了上述的 ++ --! ~ 之外, + 與 - 也可以當做是單元運算子 + 代表後面為正值而 - 號則代表將運算元乘以 -1, 與數學式子的負號相同 90

46 3.3.9 其他運算子 除了上述運算子之外,Java 還提供另外一些運算子, 分述如下 : instanceof 物件型別判斷運算子 (Type Comparison Operator) instanceof 運算子可以檢查一個物件的型別, 我們可以透過它測試該物件是否屬於某類別或某類別的子類別, 或某一個介面的實作 它的結果將會是一個布林值, 代表所測試的結果 詳見 9.6 節介紹 三元條件運算子 Java 提供了條件運算子?:, 可以用來當做簡單的 ifelse 判別指令, 它有三個運算元, 如下列範例, 我們會在條件判斷一節中詳加說明 條件運算子 使用範例 說明?: a? b : c 若 a 為 true, 則取 b, 否則取 c 其他運算子 其他運算子 除了以上所介紹的運算子之外,Java 語言還提供了某些運算子如下表, 表格中某些運算子, 我們早就已經在使用了 ( 例如 :, 分隔運算子 ), 有些則於後面章節使用時, 再做明確的說明 運算子 說明 () 應用廣泛, 不同位置有不同涵義, 例如 : 函式宣告的參數串列 提高部分運算式的優先權 控制流程的判斷式 執行強制轉型 {} 等 區塊的起始與結束 [] 指定陣列維度及存取陣列元素, 分隔運算子, 例如 : 變數宣告的間隔. 存取類別的成員或執行類別的方法 new 建立新的物件或陣列 92

47 運算子結合性及優先權 當出現 z=a*x+y 時, 我們知道要先做 a*x 再做 +y, 最後才是做 z= 這是因為從小到大, 我們都熟背 先乘除後加減 的規定 事實上, 這就是運算子優先權的規定 在 Java 中也規定了所有的運算子優先權, 我們將之整理如表 3-5, 優先權越高的運算子會越先被處理因此, 如果您不確定運算子的優先權時, 最好使用小括號 () 將想要先處理的部分運算式括起來, 以免出錯 另外一個會影響運算式最後結果的因素是運算子的結合性就如同數學上的 會先計算 1+2 再計算 (1+2)+3, 而次方計算則並非如此, 如下圖 : 圖 3-6 結合性對於運算結果的影響 運算子結合性及優先權 明顯地, + 號的結合性為由左向右, 但次方的結合性為由右向左雖然 Java 並未提供次方運算子, 但同樣也有某些運算子的執行方向是由右向左的有時方向並不會影響最後結果 ( 例如 : + ), 但有的時候卻會嚴重導致結果不同 ( 例如 : / ) 因此我們將 Java 的所有運算子之結合性也整理於表 3-5 中 94

48 運算子結合性及優先權 運算子結合性及優先權 優先權 名稱 運算子 結合性 名稱 運算子 結合性 括號運算子 () 由左而右 陣列運算子 [] 由左而右 後置運算子 運算式 ++ 運算式 -- 由左而右 單元運算子 ++ 運算式 -- 運算式 + 運算式 - 運算 由右而左 式 ~! 乘除運算子 * / % 由左而右 加減運算子 + - 由左而右 位移運算子 << >> >>> 由左而右 關係運算子 < > <= >= instanceof 由左而右 相等判斷 ==!= 由左而右 位元的 AND 運算 & 由左而右 位元的 XOR 運算 ^ 由左而右 位元的 OR 運算 由左而右 邏輯 AND 運算 && 由左而右 邏輯 OR 運算 由左而右 三元運算子? : 由右而左 表 3-5 運算子優先權順序及結合性 資料型態的轉換 在 Java 程式中, 同一個運算式允許出現不同資料型態的運算, 但是可能會發生資料型態轉換的問題, 本節將討論資料型態轉換的觀念與方法 96

49 3.4.1 自動資料型態轉換 假設程式中包含下列片段程式,a,b 被宣告為 int 與 short 型別, 當我們要將 a 的值指定給 b 時, 在編譯時期就會發生錯誤 因為 a 的值可能超過 short 所能表達的範圍 int a=20; short b=10; b=a; // 編譯時期發生錯誤, 因為 b 的表示範圍比 a 小 a=b; // 沒有錯誤, 但會發生自動資料型態轉換 自動資料型態轉換 但如果我們將 b 的值指定給 a 時, 則不會發生錯誤 因為 int 的表達範圍足以容納 b 的值 不過這個時候, 事實上編譯器已經為您的程式進行了 自動資料型態的轉換 因為, 對於 = 運算子而言, = 左右的資料型態必須相同 故當我們要將 b 的值指定給 a 時, 編譯器會先將 b 的值提升為 int 資料型態, 然後才指定給 a 98

50 3.4.1 自動資料型態轉換 為了避免錯誤, 所以我們將自動資料型態的轉換, 歸納出下列三種狀況 : (1) 必須是數值 ( 包含 char 型態 ) 之間的轉換 如果是非數值的資料 ( 如 boolean 或 String 型態 ) 則不可能發生自動型態轉換 (2) 只會將佔用空間較小的型態轉換為佔用空間較大的型態 例如 int 可自動轉換為 long,float 可自動轉換為 double 但 int 不會自動轉換為 short 或 byte, double 也不會自動轉換為 float 並且當 float 自動轉換為 double 時, 可能會出現些許誤差 (3) 浮點數和整數的轉換應該分開來看, 以 (2) 為原則 並且浮點數不會自動轉型為整數, 但整數會自動轉型為浮點數 自動資料型態轉換 Coding 注意事項 1. 整數常數若未特別註明, 則資料型態為 int 若直接設定給 byte,short,char 等型態的變數, 則會先經過自動轉型後才設定給變數 但在呼叫函式傳遞引數時, 則不會進行自動轉型 2. 由於 char 沒有負數, 因此,byte 或 short 雖然使用空間未大於 char, 但仍不會自動轉型 100

51 3.4.2 運算式的資料轉換 若某一個運算式中包含不同的資料型態, 則編譯器會自動依照下列規則進行自動轉型 (1)boolean 型態不轉型 (2)char 型態轉型為 short 型態 (3) 若運算元包含 short 與 int 兩種型態, 則全部會轉換為 int 型態 (4) 若運算元包含 float 浮點數與整數, 則會全部轉換為 float 型態 (5) 若運算元包含 double 浮點數, 則會全部轉換為 double 型態 (6) 佔用記憶體空間較少者會轉換為佔用記憶體空間較大的型態 我們以範例來加以說明 : 運算式的資料轉換 範例 3-7:ch3_07.java( 隨書光碟 myjava\ch03\ch3_07.java) /* 檔名 :ch3_07.java 功能 : 運算式的自動轉型範例 */ package myjava.ch03; import java.lang.*; public class ch3_07 // 主類別 result = 46.3 { public static void main(string args[]) { short s=23; int a=100; char b='a'; float c=3.5f; double d=4.8d; // 相當於 double d=4.8; } } System.out.print("result = "); System.out.println((s+a-b+c)+(c*d)); 執行結果 會產生自動轉型 102

52 3.4.2 運算式的資料轉換 範例說明 : (1) 第 17 行的運算式為 (s+a-b+c)+(c*d), 因此會依照下圖步驟來轉換資料型態 運算式的資料轉換 範例說明 : (2) 將上圖之變數以實際變數值代入後, 則如下圖 104

53 3.4.3 強制資料型態轉換 自動資料型態轉換非常複雜, 使得我們常常難以控制, 並且時常浮點數的自動轉型會出現精確度的問題例如您如果將範例 3-7 的第 14 行 double d=4.8d 修改為 double d=4.82d, 則執行結果為 result = 為了讓程式設計師更能掌控資料型態轉換的問題, Java 也提供使用者強制轉型的機制, 格式如下 ( 強制轉換型態 ) 運算式或變數 ; 強制資料型態轉換 範例 : 若 x=15,y=4 皆為 int 整數變數,z 為 float 浮點數變數, 則運算式 z = x / y, 會得到 z=3.0 因為 x 與 y 都是整數, 而 15/4=3.75, 取整數為 3, 因此 z=3 但若是以強制型態轉換來重寫運算式 z = (float)x / (float)y, 則運算前會先將 x y 都轉換為浮點數, 而 15.0/4.0=3.75, 因此 z=

54 3.4.4 使用內建類別轉換資料型態 Java 是一個純物件導向的程式語言, 對於 Java 而言, 什麼都可以是物件 因此,Java 為八種原始資料型態也定義了對應的內建類別, 如下表所列 : 原始資料型態 byte short int long char boolean float 對應的內建類別 Byte Short Integer Long Character Boolean Float 表 3-6 原始資料型態對應之內建類別 double Double 使用內建類別轉換資料型態 在這些對應類別中, 有一個資料欄位 ( 成員變數 ) 的資料型態為所對應的原始資料型態例如 Integer 類別的物件將會有一個 int 型態的成員變數, 但由於封裝等級的緣故, 所以我們不能直接以 物件. 欄位 存取該變數, 而必須透過它的方法來運作這些變數 在上一小節中, 我們介紹過原始資料型態之間的強制轉型, 但字串與原始資料型態又該如何進行轉型呢? 在這些內建類別中, 有一些被宣告為 static 的類別方法 (Class Method), 使得我們不用產生物件就可以直接利用該方法 而這些方法中, 有一些可以作為字串與原始資料型態轉換之用, 整理如下表 : 108

55 3.4.4 使用內建類別轉換資料型態 所屬類別 轉換可用之 static 方法 (Class Method) 功能 java.lang.byte static byte parsebyte(string s) 將字串轉為 byte 型態 java.lang.byte static String tostring(byte b) 將 byte 型態轉為字串 java.lang.short static short parseshort(string s) 將字串轉為 short 型態 java.lang.short static String tostring(short s) 將 short 型態轉為字串 java.lang.integer static int parseint(string s) 將字串轉為 int 型態 java.lang.integer static String tostring(int i) 將 int 型態轉為字串 java.lang.long static long parselong(string s) 將字串轉為 long 型態 java.lang.long static String tostring(long i) 將 long 型態轉為字串 java.lang.float static float parsefloat(string s) 將字串轉為 float 型態 java.lang.float static String tostring(float f) 將 float 型態轉為字串 表 3-7 原始資料型態與字串轉換的可用方法 使用內建類別轉換資料型態 所屬類別 轉換可用之 static 方法 (Class Method) 功能 java.lang.double static double parsedouble(string s) 將字串轉為 double 型態 java.lang.double static String tostring(double d) 將 double 型態轉為字串 java.lang.boolean static boolean parseboolean(string s) 將字串轉為 boolean 型態 java.lang.boolean static String tostring(boolean b) 將 boolean 型態轉為字串 java.lang.character static String tostring(char c) 將 char 型態轉為字串 表 3-7 原始資料型態與字串轉換的可用方法 註 : 以上各方法的封裝等級為 public 註 :boolean parseboolean(string s) 只有在 s="true" 時, 才會回傳布林值 true, 否則全部都回傳布林值 false 110

56 3.4.4 使用內建類別轉換資料型態 範例 3-8:ch3_08.java( 隨書光碟 myjava\ch03\ch3_08.java) /* 檔名 :ch3_08.java 功能 : 字串轉原始資料型態範例 */ package myjava.ch03; import java.lang.*; import java.io.console; public class ch3_08 // 主類別 { public static void main(string args[]) { Console console=system.console(); String str1; double x; } } System.out.print(" 欲求 x 的 3 次方, 請輸入 x:"); str1 = console.readline(); 將字串轉型為 double x=double.parsedouble(str1); System.out.println("x 的 3 次方為 :" + (x*x*x)); 使用內建類別轉換資料型態 執行結果 : 範例說明 : 欲求 x 的 3 次方, 請輸入 x:6.5 x 的 3 次方為 : 由鍵盤輸入的資料經過 readline 方法讀取後, 為字串 str1 的內容, 因此要進行第 18 行的數值運算前, 應該要先進行轉型, 故在第 17 行透過 parsedouble 方法進行轉型 由於該方法為 static 方法, 故不需要產生物件實體, 但執行時則必須指定它屬於哪一個類別 112

57 3.4.4 使用內建類別轉換資料型態 String 類別的 valueof 方法 除了上述的內建類別之外, 在 String 字串類別中, 也有利用多載 (overload) 技術宣告的 static valueof 類別方法可以用來將原始資料型態轉換為字串 請見範例的說明 : 使用內建類別轉換資料型態 範例 3-9:ch3_09.java( 隨書光碟 myjava\ch03\ch3_08.java) /* 檔名 :ch3_09.java 功能 : 數值轉字串範例 */ package myjava.ch03; import java.lang.*; public class ch3_09 // 主類別 { public static void main(string args[]) { short a=100; int b=200; float d=3.5f; double e=4.8d; // 相當於 double d=4.8; String s1,s2; } } s1=string.valueof(a+b)+string.valueof(a)+string.valueof(b); s2=float.tostring(d)+double.tostring(e); System.out.println("s1 = " + s1); System.out.println("s2 = " + s2); 執行結果 s1 = s2 = valueof() 是多載的方法 tostring 必須指定正確的引數資料型態 114

58 3.4.4 使用內建類別轉換資料型態 範例 3-9:ch3_09.java( 隨書光碟 myjava\ch03\ch3_09.java) /* 檔名 :ch3_09.java 功能 : 數值轉字串範例 */ package myjava.ch03; import java.lang.*; public class ch3_09 // 主類別 { public static void main(string args[]) { short a=100; int b=200; float d=3.5f; double e=4.8d; // 相當於 double d=4.8; String s1,s2; } } s1=string.valueof(a+b)+string.valueof(a)+string.valueof(b); s2=float.tostring(d)+double.tostring(e); System.out.println("s1 = " + s1); System.out.println("s2 = " + s2); 執行結果 s1 = s2 = valueof() 是多載的方法 tostring 必須指定正確的引數資料型態 使用內建類別轉換資料型態 範例說明 : (1) 第 16 行, 使用了三次 String 類別的 static 方法 valueof 將三個數值轉為字串, 然後透過 + 進行字串的連結 所以 s1=" " 由於 valueof 使用了多載技術, 使得輸入的引數可以為任何的原始資料型態, 故我們不用關心 a+b 為何種資料型態 ( 事實上, 根據之前的自動轉型規則所言,a+b 的結果應該是 int 資料型態 ) (2) 第 17 行使用的是 Float 與 Double 類別的 tostring 方法進行轉型, 因此您必須依照傳入引數的型別, 決定正確的類別名稱, 否則將出現錯誤 該行同樣可以使用 s2=string.valueof(d)+string.valueof(e); 來取代 至於執行結果中,s2="3.54.8", 是因為兩個數值被轉型為字串後進行連結的緣故 ("3.5" 連結 "4.8") (3) 由這個例子可知, 使用 valueof 將數值轉為字串較為方便, 因為不用理會原始數值屬於哪一種資料型態 116

59 3.5 本章回顧 最簡單的單一敘述是運算式敘述, 也就是運算式加上結尾 ; 而運算式則是由運算子與運算元組合而成 運算元可以是變數或其他運算式 (1)Java 的資料處理基本單位為 變數 在類別內的變數視為該類別的欄位 (field) 在方法內宣告的變數則為該方法的區域變數 (2)Java 的任何變數使用前必須先加以宣告 宣告變數時, 必須宣告該變數的資料型態, 並且可分為原始資料型態 (primitive type) 與非原始資料型態 (non-primitive type) 兩類 本章回顧 (3) 在 Java 中, 字串是以物件方式存放 ( 非原始資料型態 ) 該物件所屬類別為 java.lang.string 但我們可以使用宣告原始資料型態變數的方式來宣告字串, 也可以使用宣告非原始資料型態 ( 物件 ) 變數的方式來宣告字串 (4) 原始資料型態包含 byte,short,int,long,char,boolean,float, double 等八類, 可以用來宣告浮點數 整數 布林變數 字元等變數 其中 Java 的字元採用 Unicode 來表示 並且特殊功能的跳脫字元, 可以透過 \ 在前的方式來表示 118

60 3.5 本章回顧 (5) 宣告變數時, 可以給定初值 若未給定初值, 則將採用 Java 內定的各種資料型態初值, 一般為 0,false,'\u0000' 或 null (6) 若某個數值不會在程式中產生異動, 此時可利用 final 修飾字宣告為不會變動的變數, 而 final 變數在第一次設定其值後就不允許重新設定其值 (7) 常數代表固定的值, 例如 1,1.5L,'a', 等等 當程式中出現了字串常數 ( 如 "abc"), 則一定會產生一個 String 物件以存放其內容 並且 Java 採用 String Pool 及自動記憶體回收機制有效管理眾多字串常數 本章回顧 (8) 字串是由字元所組成, 因此, 字串的內容事實上是存放在 char[] 型態的字元陣列中, 該字元陣列則為字串物件的成員 (9) 在 JDK6 之後, 針對資料的輸出入,Java 提供了方便的 java.io.console 類別, 我們可以透過它的 readline 方法, 取得使用者在文字模式 (console mode) 下的鍵盤輸入, 並且它不涉及例外處理的語法 (10)Java 提供了眾多的運算子, 例如 +,-,*,/, 並且某些運算子可以依照不同的運算元資料型態產生不同的效果, 例如 + 號運算子可以進行數值相加, 也可以進行字串相連 120

61 3.5 本章回顧 (11) 運算子具有優先權與結合性問題, 若不確定其優先權, 可以透過小括號 () 將之包裝以強迫優先處理 (12) 運算式若出現不同資料型態的變數, 則編譯器會自動將資料做最適當的型態轉換 (13) 在 Java 語言中, 允許使用者進行強制型態轉換, 語法如下 : ( 強制轉換型態 ) 運算式或變數 ; (14) 我們可以使用原始資料型態對應的內建類別所提供的相關方法來進行資料型態的轉換 由於這些方法被宣告為 static, 因此不用產生物件, 就可以透過類別名稱來進行轉換 121 本章結束 Q&A 討論時間 122

CHAPTER VC#

CHAPTER VC# 1. 2. 3. 4. CHAPTER 2-1 2-2 2-3 2-4 VC# 2-5 2-6 2-7 2-8 Visual C# 2008 2-1 Visual C# 0~100 (-32768~+32767) 2 4 VC# (Overflow) 2-1 2-2 2-1 2-1.1 2-1 1 10 10!(1 10) 2-3 Visual C# 2008 10! 32767 short( )

More information

Microsoft Word - CS-981.doc

Microsoft Word - CS-981.doc 4. 資料表示法 4.1 十進位與數字系統 (1). 基本觀念 數字系統的觀念 人們習慣以十進位的計量方式來計算 不同的數字系統有二進位 (Binary) 八進位 (Octal) 十進位 (Decimal) 十六進位(Hexadecimal) 二進位 電腦內部用來表達訊號的資料只有兩種符號 : 0 表示沒電,1 表示有電透過多個電路的組合表示出無數符號, 電腦便利用這些符號來表示不同的數字 利用兩條電線可以表示出

More information

Microsoft Word - 投影片ch03

Microsoft Word - 投影片ch03 Java2 JDK5.0 教學手冊第三版洪維恩編著博碩文化出版書號 pg20210 第三章變數與資料型態 本章學習目標認識變數與常數認識 Java 的基本資料型態學習如何進行資料型態轉換學習如何由鍵盤輸入資料 變數與資料型態 3-2 Java 的資料型態分為 : 與 原始資料型態 (primitive type) 非原始資料型態 (non-primitive type) 原始資料型態包括了整數與浮點數等型態

More information

新・解きながら学ぶJava

新・解きながら学ぶJava 481! 41, 74!= 40, 270 " 4 % 23, 25 %% 121 %c 425 %d 121 %o 121 %x 121 & 199 && 48 ' 81, 425 ( ) 14, 17 ( ) 128 ( ) 183 * 23 */ 3, 390 ++ 79 ++ 80 += 93 + 22 + 23 + 279 + 14 + 124 + 7, 148, 16 -- 79 --

More information

第1章

第1章 第 15 章 標準類別 1 本章提要 15.1 前言 15.2 基本資料類別介紹 15.3 Integer 類別 15.4 Double 類別 15.5 Float 類別 Long 類別 Short 類別 15.6 數學相關類別 Math 15.7 後記 2 15.1 前言 不同基本資料型別可以互相轉換, 但也只予許由小轉大的情況, 例如 1. byte 轉為 short int long float

More information

3.1 num = 3 ch = 'C' 2

3.1 num = 3 ch = 'C' 2 Java 1 3.1 num = 3 ch = 'C' 2 final 3.1 final : final final double PI=3.1415926; 3 3.2 4 int 3.2 (long int) (int) (short int) (byte) short sum; // sum 5 3.2 Java int long num=32967359818l; C:\java\app3_2.java:6:

More information

第 5 章 使用資料

第 5 章  使用資料 新觀念的 Visual Basic.NET 教本 第 5 章使用資料 5-1 資料的表示法 VB.NET 資料的分類 數值資料 字串資料 日期時間資料 布林資料 數值資料 整數 VB.NET 的整數與數學的整數並沒有什麼不同, 如 2005 0 +512-204 等均為正確的寫法, 但逗號是不能使用的, 如 10,000 便是不正確的表示法 十六進位數要在前面加上 &H, 八進位數要在前面加上 &O(

More information

Microsoft PowerPoint - java2012-ch12投影片.ppt

Microsoft PowerPoint - java2012-ch12投影片.ppt 第十二章大型程式的發展與常用的類別庫 學習如何分割檔案認識類別庫以及取用類別庫裡的類別建構 package 的階層關係學習 Java 裡常用的類別庫 1 分割檔案的實作 (1/2) 12.1 檔案的分割 以 CCircle 類別為例, 說明分割檔案的實作 1. 依序建立兩個類別檔案, 並置於同一個資料夾內 : 2 分割檔案的實作 (2/2) 12.1 檔案的分割 2. 分別以下列的指令編譯 CCircle.java

More information

街街街街街街街街

街街街街街街街街 1 基本輸出入 與四則運算 本章大綱 5.1 本章的教學目標 5.2 Java 語言的運算子 5.3 算術與字串連接運算子 5.4 位元運算子 5.5 資料型態的轉換 5.1 本章的教學目標 程式語言有許多的算術運算所組成, 本章將介紹 Java 程式語言中基本輸出入運算子的功能與使用方式, 運算子包括 : 指定運算子 算數與字串連接運算子 位元運算子 資料型態的轉換運算子的功能與相關應用, 讓各位同學了解不同運算子的使用時機與應用方法

More information

0 0 = 1 0 = 0 1 = = 1 1 = 0 0 = 1

0 0 = 1 0 = 0 1 = = 1 1 = 0 0 = 1 0 0 = 1 0 = 0 1 = 0 1 1 = 1 1 = 0 0 = 1 : = {0, 1} : 3 (,, ) = + (,, ) = + + (, ) = + (,,, ) = ( + )( + ) + ( + )( + ) + = + = = + + = + = ( + ) + = + ( + ) () = () ( + ) = + + = ( + )( + ) + = = + 0

More information

Microsoft PowerPoint - ch03_AEL0080.ppt

Microsoft PowerPoint - ch03_AEL0080.ppt 3 基本資料型態 能盡物之性, 則可以贊天地之化育 可以贊天地之化育, 則可以與天地矣 中庸中庸.第二十一章第二十一章 1/88 基本資料型態 3.1 3.2 3.3 3.4 3.5 3.6 3.7 整數和浮點數變數和常數算術運算標準數學函數的運算邏輯值及其運算字元與字串位元處理運算 2/88 C++ 的資料型態 C++ 資料型態 基本資料型態 整數 int, short, long 浮點數 float,

More information

Microsoft PowerPoint - 02_運算.pptx

Microsoft PowerPoint - 02_運算.pptx 回顧 第一個程式 基本架構 五行必寫的公式 註解的寫法 cout

More information

Java 程式設計入門

Java 程式設計入門 Java 程式設計入門 講師 : 陳昭源 CISE, NTU August 28, 2005 Outline 變數 Variables 運算子 Operators 運算式 (Expressions) 敘述(Statements) & 程式區塊 (Blocks) 流程控制 Control Flow Statements if-else statements switch statements August

More information

第1章

第1章 第 8 章 函式 1 本章提要 8.1 前言 8.2 如何定義函式 8.3 函式的呼叫和返回 8.4 傳遞陣列 8.5 方法多載 8.6 遞迴 8.7 綜合練習 8.8 後記 2 8.1 前言 每一種高階程式語言都有提供函式 (Function)( 或稱函數 ) 的功能, 以便將經常使用到的程式功能包裝成函式的形式, 如此一來便能反覆地呼叫該函式來完成某件特定工作在高階程式語言中, 副程式 (Subroutine)

More information

untitled

untitled 1 Outline 數 料 數 數 列 亂數 練 數 數 數 來 數 數 來 數 料 利 料 來 數 A-Z a-z _ () 不 數 0-9 數 不 數 SCHOOL School school 數 讀 school_name schoolname 易 不 C# my name 7_eleven B&Q new C# (1) public protected private params override

More information

Microsoft PowerPoint - EmbSys102_JavaOOP [相容模式]

Microsoft PowerPoint - EmbSys102_JavaOOP [相容模式] 嵌入式系統及實驗 Embedded System and Experiment 詹曉龍 長庚大學電機系 Java 的類別與物件 : 宣告類別 建構子 public class Customer { // Customer 類別宣告 private String name; // 成員資料 private String address; public int age; // 建構子 : 使用參數設定成員資料初始值

More information

CC213

CC213 : (Ken-Yi Lee), E-mail: feis.tw@gmail.com 49 [P.51] C/C++ [P.52] [P.53] [P.55] (int) [P.57] (float/double) [P.58] printf scanf [P.59] [P.61] ( / ) [P.62] (char) [P.65] : +-*/% [P.67] : = [P.68] : ,

More information

Microsoft PowerPoint - C_Structure.ppt

Microsoft PowerPoint - C_Structure.ppt 結構與其他資料型態 Janet Huang 5-1 結構的宣告 struct 結構名稱 struct 結構名稱變數 1, 變數 2,, 變數 m; struct 結構名稱 變數 1, 變數 2,, 變數 m; student; student; 5-2 1 結構變數初值的設定 struct 結構名稱 struct 結構名稱變數 = 初值 1, 初值 2,, 初值 n student="janet","1350901",100,95

More information

PowerPoint Presentation

PowerPoint Presentation 第六章簡介運算子超載 (Operator Overloading) 6-1 運算子超載的基礎 6-2 超載二元運算子 6-3 超載邏輯與關係運算子 6-4 超載一元運算子 6-5 使用夥伴函數 6-6 細部檢視指定運算子 6-7 超載註標運算子 6-1 運算子超載的基礎 甚麼是運算子超載? 讓運算子 ( 符號 ) 有不同的意義 EX: 運算子的預設意義 ( 以 + 與 = 為例 ) class frac

More information

. (A) (B) (C) A (D) (E). (A)(B)(C)(D)(E) A

. (A) (B) (C) A (D) (E). (A)(B)(C)(D)(E) A . () () () () () (A) (B) (C) B (D) (E). (A) (B) (C) E (D) (E) (A) (B) (C) (D). () () () () E (A) (B) (C) (D) (E). C (A) (B) (C) (D) (E). (A) (B) (C) (D) D (E). () - () - () - () - () - D (A) (B) (C) (D)

More information

星星排列 _for loop Protected Sub Page_Load(ByVal sender As Object, ByVal e As Dim h As Integer = 7 'h 為變數 ' Dim i, j As Integer For i = 1 To h

星星排列 _for loop Protected Sub Page_Load(ByVal sender As Object, ByVal e As Dim h As Integer = 7 'h 為變數 ' Dim i, j As Integer For i = 1 To h 資訊系統與實習 製作 : 林郁君 一 2009.09.28 9X9 'button 被按下後 ' Dim i, j As Integer For i = 1 To 9 'i 從 1 到 9' For j = 1 To 9 'j 從 1 到 9' If j * i < 10 Then ' 如果 j 乘上 i 是為個位數 ' Response.Write(i & "*" & j & " =" & i *

More information

Microsoft PowerPoint - java2012-ch08投影片.ppt

Microsoft PowerPoint - java2012-ch08投影片.ppt 第八章認識類別 認識類別的基本架構在類別裡使用資料成員與函數成員學習 this 關鍵字的用法在類別裡設計函數的多載學習如何使用類別裡的公有與私有成員 1 類別的基本概念 每一個 Java 程式, 至少會存在一個或一個以上的類別 類別是由資料成員與函數成員封裝而成 類別內的資料成員稱為 field( 範疇 ) 在 oop 裡, 函數成員是封裝在類別之內 類別是由 資料成員 與 函數成員 封裝而成 2

More information

Microsoft PowerPoint - ch04_AEL0080.ppt

Microsoft PowerPoint - ch04_AEL0080.ppt 4 選擇 在正常的情況下, 電腦程式的執行是以敘述的排列次序逐步處理的 使用控制架構 (control structures) 可以改變這種既定的先後次序, 讓程式得以進行更複雜的運算, 或以更簡潔的指令來實現演算法 1/42 選擇 4.1 演算法的描述方式 4.2 變數的運用範圍 (Scope of variables) 4.3 if- 敘述 4.4 巢狀 if- 敘述 (Nested if statements)

More information

Microsoft PowerPoint - C-Ch11.ppt

Microsoft PowerPoint - C-Ch11.ppt 各式各樣的資料型態 11-1 結構的基礎知識 決定新的型態 關於結構 結構資料型態可以將不同資料型態的值整合成新的型態 結構型態的宣告語法 : struct 結構型態 { 資料型態識別字 ; 資料型態識別字 ; }; 加上 struct 進行宣告 宣告結構變數 語法 : 結構型態結構變數名稱 ; 範例 : struct Car car1; 對成員進行存取 使用結構型態的成員時, 必須使用成員選擇運算子

More information

Microsoft Word - Prog1-981.docx

Microsoft Word - Prog1-981.docx 5. 變數參照 (Memory Reference) 5.1 指標 (Pointer) (1). 指標 (Pointer) 的基本觀念 特性 內含為一 Memory Address 會因不同的機器而有不同的結果 &" 也是代表變數的位址 例如 : int var1 = 2; cout

More information

CC213

CC213 : (Ken-Yi Lee), E-mail: feis.tw@gmail.com 9 [P.11] : Dev C++ [P.12] : http://c.feis.tw [P.13] [P.14] [P.15] [P.17] [P.23] Dev C++ [P.24] [P.27] [P.34] C / C++ [P.35] 10 C / C++ C C++ C C++ C++ C ( ) C++

More information

Microsoft PowerPoint - ch1.pptx

Microsoft PowerPoint - ch1.pptx 1 變數 資料型別 變數宣告及使用 型別轉換 運算子 常數 列舉型別 結構型別 亂數 課後練習 2 何謂變數 變數 是用來請電腦幫忙記住某些我們需要的東西 變數宣告 變數在使用之前, 必須先告訴電腦要預先準備多大的空間來存放這個變數的內容, 這樣的步驟稱之為 宣告 資料型別 利用 資料型別 來描述所需要的空間大小 3 開頭第一個字必須為 A Z a z 或 _ ( 底線 ) 不允許數字 0 9 當做變數的開頭

More information

untitled

untitled 1 Outline 類别 欄 (1) 類 類 狀 更 易 類 理 若 類 利 來 利 using 來 namespace 類 ; (2) namespace IBM class Notebook namespace Compaq class Notebook 類别 類 來 類 列 欄 (field) (property) (method) (event) 類 例 立 來 車 類 類 立 車 欄 料

More information

Microsoft Word - JAVA Programming Language Homework I ans

Microsoft Word - JAVA Programming Language Homework I ans JAVA Programming Language Homework I - OO concept Student ID: Name: 1. Which of the following techniques can be used to prevent the instantiation of a class by any code outside of the class? A. Declare

More information

Microsoft PowerPoint - 12 struct and other datatypes.ppt

Microsoft PowerPoint - 12 struct and other datatypes.ppt 第十一章結構與其它資料型態 結構與巢狀結構 結構陣列的各種使用方法 列舉型態 自定的型態別名 typedef 認識結構 使用者自定的資料型態 結構可將型態不同的資料合併成為新的型態 定義結構與宣告結構變數的格式如下 : struct 結構名稱 資料型態成員名稱 1; 資料型態成員名稱 2;... 資料型態成員名稱 n; struct 結構名稱變數 1, 變數 2,, 變數 n; 定義結構與宣告結構變數的語法

More information

第1章

第1章 第 7 章 字串 1 本章提要 7.1 前言 7.2 類別與物件 7.3 String 類別 7.4 StringBuffer 類別 7.5 綜合練習 7.6 後記 2 7.1 前言 Java 用 String 類別 (Class) 來處理字串, String 類別是 Java 類別庫內建的類別, 它是一堆已經寫好的程式, 我們可以直接拿來使用字串很像字元型別的一維陣列, 字串裡能存放的資料都屬於字元性質,

More information

untitled

untitled 1 Outline 料 類 說 Tang, Shih-Hsuan 2006/07/26 ~ 2006/09/02 六 PM 7:00 ~ 9:30 聯 ives.net@gmail.com www.csie.ntu.edu.tw/~r93057/aspnet134 度 C# 力 度 C# Web SQL 料 DataGrid DataList 參 ASP.NET 1.0 C# 例 ASP.NET 立

More information

840 提示 Excel - Excel -- Excel (=) Excel ch0.xlsx H5 =D5+E5+F5+G5 (=) = - Excel 00

840 提示 Excel - Excel -- Excel (=) Excel ch0.xlsx H5 =D5+E5+F5+G5 (=) = - Excel 00 Excel - - Excel - -4-5 840 提示 Excel - Excel -- Excel (=) Excel ch0.xlsx H5 =D5+E5+F5+G5 (=) = - Excel 00 ( 0 ) 智慧標籤 相關說明提示 -5 -- Excel 4 5 6 7 8 + - * / % ^ = < >= & 9 0 (:) (,) ( ) Chapter - :,

More information

Variable Argument Lists

Variable Argument Lists Variable Argument Lists 在 C 語言中, 當函數的 argument list 出現 ellipsis( ), 表示該函數需要使用到 variable argument lists ( 不定參數串列 ) 或稱 variable-length argument lists( 不定長度參數串列 ), 要取得 list 中的 arguments 時, 要透過 type( 型態 )

More information

任務二 : 產生 20 個有炸彈的磚塊, 放在隨機的位置編輯 Block 類別的程式碼 import greenfoot.; // (World, Actor, GreenfootImage, Greenfoot and MouseInfo) Write a description of class

任務二 : 產生 20 個有炸彈的磚塊, 放在隨機的位置編輯 Block 類別的程式碼 import greenfoot.; // (World, Actor, GreenfootImage, Greenfoot and MouseInfo) Write a description of class 踩地雷遊戲 高慧君南港高中 開啟專案 MineSweep 任務一 : 產生 30X20 個磚塊編輯 Table 類別的程式碼 import greenfoot.; // (World, Actor, GreenfootImage, Greenfoot and MouseInfo) import java.util.arraylist; Write a description of class MyWorld

More information

Microsoft Word - 04_object_Boxing_property_indexer.doc

Microsoft Word - 04_object_Boxing_property_indexer.doc C# 程式設計人員參考 object 型別是.NET Framework 中,System.Object 的別名 您可以將 任何型別的值指派給 object 型別的變數 所有的資料型別, 包括預先定義的和使用者定義的, 都繼承自 System.Object 類別 object 資料型別是物件 Box 目標或來源的型 別 範例下列範例顯示 object 型別的變數如何接受任何資料型別的值, 以及 object

More information

Microsoft PowerPoint - EmbSys101_Java Basics.ppt [相容模式]

Microsoft PowerPoint - EmbSys101_Java Basics.ppt [相容模式] Java Basics Hi Hsiao-Lung Chan, Ph.D. Dept Electrical Engineering Chang Gung University, Taiwan chanhl@maili.cgu.edu.twcgu 執行環境 - eclipse 點選 eclipse 軟體執行檔 設定工作路徑 eclipse 開啟 2 建置 Java 專案 File New project

More information

KillTest 质量更高 服务更好 学习资料 半年免费更新服务

KillTest 质量更高 服务更好 学习资料   半年免费更新服务 KillTest 质量更高 服务更好 学习资料 http://www.killtest.cn 半年免费更新服务 Exam : 310-065Big5 Title : Sun Certified Programmer for the Java 2 Platform, SE 6.0 Version : Demo 1 / 14 1. 35. String #name = "Jane Doe"; 36. int

More information

エスポラージュ株式会社 住所 : 東京都江東区大島 東急ドエルアルス大島 HP: ******************* * 关于 Java 测试试题 ******

エスポラージュ株式会社 住所 : 東京都江東区大島 東急ドエルアルス大島 HP:  ******************* * 关于 Java 测试试题 ****** ******************* * 关于 Java 测试试题 ******************* 問 1 运行下面的程序, 选出一个正确的运行结果 public class Sample { public static void main(string[] args) { int[] test = { 1, 2, 3, 4, 5 ; for(int i = 1 ; i System.out.print(test[i]);

More information

Microsoft PowerPoint - java2012-ch13投影片.ppt

Microsoft PowerPoint - java2012-ch13投影片.ppt 第十三章例外處理 瞭解什麼是例外處理認識例外類別的繼承架構認識例外處理的機制學習如何撰寫例外類別 1 例外的基本觀念 在撰寫程式時常見的幾種情況 : (1) 要開啟的檔案並不存在 (2) 存取陣列時, 陣列的索引值超過陣列容許的範圍 (3) 原本預期使用者由鍵盤輸入的是整數, 但使用者輸入的卻是英文字母 這類不尋常的狀況稱為 例外 (exception) 在 Java 中, 所有的例外都是以類別的型態存在

More information

untitled

untitled How to using M-Power Report API M-Power Report API 力 了 M-Power Report -- Java (Library) M-Power Report API 行 Java M-Power Report M-Power Report API ( 30 ) PDF/HTML/CSV/XLS JPEG/PNG/SVG 料 料 OutputStream

More information

Microsoft PowerPoint - ch02

Microsoft PowerPoint - ch02 02 數位資料表示法 CHAPTER 2-1 資料型態 2-2 二進位表示法 2-3 各種進位表示法的轉換 2-4 整數表示法 2-5 浮點數表示法 2-6 ASCII 及 Unicode 0 與 1 的組合 計算機概論 2 數位資訊的單位 位元 (binary digit, 簡稱 bit) 是數位資訊的基本粒子, 也是電腦儲存或傳遞資料的最小單位, 常用 0 或 1 來表示 當初電腦會採用位元表示資料,

More information

Microsoft Word - 第3章.doc

Microsoft Word - 第3章.doc Java C++ Pascal C# C# if if if for while do while foreach while do while C# 3.1.1 ; 3-1 ischeck Test() While ischeck while static bool ischeck = true; public static void Test() while (ischeck) ; ischeck

More information

Ps22Pdf

Ps22Pdf A B C D A B C D A B C D a a b c x x x x x x x x x x x x x x x x x a b c x a x x x x x x x x x x a b a b a b x x x x x x x x x x x x A B C A B C A B A B A x B C x D A B C a b c a b x x x x x x x A B A

More information

目次 CONTENTS 2 1 乘法公式與多項式 二次方根與畢氏定理 因式分解 一元二次方程式

目次 CONTENTS 2 1 乘法公式與多項式 二次方根與畢氏定理 因式分解 一元二次方程式 給同學的話 1 2 3 4 目次 CONTENTS 2 1 乘法公式與多項式 1-1 3 1-2 7 1-3 11 1 16 2 二次方根與畢氏定理 2-1 20 2-2 24 2-3 29 2 33 3 因式分解 3-1 37 3-2 41 3-3 45 3 49 4 一元二次方程式 4-1 53 4-2 57 4-3 61 4 65 3 1-1 乘法公式 本節性質與公式摘要 1 分配律 : ddd

More information

全國各級農會第 2 次聘任職員統一考試試題 科目 : 程式設計類別 : 九職等以下新進人員作答注意事項 : 1 全部答案請寫在答案卷內, 如寫在試題紙上, 則不予計分 2 請以黑色或藍色鋼筆或原子筆書寫, 並以橫式書寫 ( 由左至右, 由上而下 ) 一 選擇題 ( 每題 4 分, 共 40 分 )

全國各級農會第 2 次聘任職員統一考試試題 科目 : 程式設計類別 : 九職等以下新進人員作答注意事項 : 1 全部答案請寫在答案卷內, 如寫在試題紙上, 則不予計分 2 請以黑色或藍色鋼筆或原子筆書寫, 並以橫式書寫 ( 由左至右, 由上而下 ) 一 選擇題 ( 每題 4 分, 共 40 分 ) 全國各級農會第 2 次聘任職員統一考試試題 一 選擇題 ( 每題 4 分, 共 40 分 ) 1. 在 Java 語言中, 請問下列何者資料型別的變數, 所需的儲存空間最少? (a) char (b) float (c) double (d) int 2. 請問下列何者非 C 語言的關鍵字 (key word)? (a) const (b) default (c) dynamic (d) continue

More information

10-2 SCJP SCJD 10.1 昇陽認證 Java 系統開發工程師 的認證程序 Java IT SCJD

10-2 SCJP SCJD 10.1 昇陽認證 Java 系統開發工程師 的認證程序 Java IT SCJD 10 SCJD 簡介 Java 10-2 SCJP SCJD 10.1 昇陽認證 Java 系統開發工程師 的認證程序 Java IT SCJD 10 SCJD 10-3 Java Java SCJD 7 Swing RMI 10.1.1 The Assignment The Essay 9 10 10-4 SCJP SCJD 90 10.1.2 SCJP Java 90 120 Swing 10

More information

The Embedded computing platform

The Embedded computing platform 嵌入式系統及實驗 Embedded System and Experiment 詹曉龍 長庚大學電機系 Java 的類別與物件 : 宣告類別 建構子 public class Customer { private String name; private String address; // Customer 類別宣告 // 成員資料 public int age; // 建構子 : 使用參數設定成員資料初始值

More information

第1章

第1章 第 9 章 類別 1 本章提要 9.1 前言 9.2 物件導向程式設計基礎 9.3 類別的基本認識 9.4 公有成員與私有成員 9.5 類別變數與類別方法 9.6 進一步認識方法 9.7 進一步認識建構元 9.8 其它 9.9 綜合練習 9.10 後記 2 9.1 前言 物件導向程式設計的特性主要有 : 分而治之 (Divide and Conquer) 資訊隱藏 (Information Hiding)

More information

Chapter 9: Objects and Classes

Chapter 9: Objects and Classes Fortran Algol Pascal Modula-2 BCPL C Simula SmallTalk C++ Ada Java C# C Fortran 5.1 message A B 5.2 1 class Vehicle subclass Car object mycar public class Vehicle extends Object{ public int WheelNum

More information

(E). (A) (B) (C) (D) (E). (A) (B) (C) (D) (E) (A) (B) (C) (D) (E) (A) (B) (C) (D). ( ) ( ) ( ) ( ) ( ) ( ) (A) (B) (C) (D) (E). (A) (B) (C) (D) (E). (

(E). (A) (B) (C) (D) (E). (A) (B) (C) (D) (E) (A) (B) (C) (D) (E) (A) (B) (C) (D). ( ) ( ) ( ) ( ) ( ) ( ) (A) (B) (C) (D) (E). (A) (B) (C) (D) (E). ( . (A) (B) (C) (D) (E). ( ) ( ) ( ) ( ) ( ) ( ) (A) (B) (C) (D) (E) (A) (B) (C) (D) (E). (A) (B) (C) (D) (E). (A) (B) (C) (D) (E). 1950 (A) (B) (C) (D) (E). 60 70 (A) (B) (C) (D) (E). ( ) ( ) ( ) ( ) (

More information

Microsoft PowerPoint - SE7ch02.ppt

Microsoft PowerPoint - SE7ch02.ppt 第二章 Java 從零開始 (Java 程式的基本結構 ) 課前指引在本章中, 我們將透過一個非常簡單的 Java 程式來說明 Java 的程式結構 章節大綱 2.1 最簡單的 Java 程式範例 2.2 註解 (comment) 2.6 Java 程式的進入點 main( ) 2.7 Java 的敘述 2.3 package 區 2.4 import 區 2.8 println() 輸出方法的簡易使用法

More information

主程式 : public class Main3Activity extends AppCompatActivity { ListView listview; // 先整理資料來源,listitem.xml 需要傳入三種資料 : 圖片 狗狗名字 狗狗生日 // 狗狗圖片 int[] pic =new

主程式 : public class Main3Activity extends AppCompatActivity { ListView listview; // 先整理資料來源,listitem.xml 需要傳入三種資料 : 圖片 狗狗名字 狗狗生日 // 狗狗圖片 int[] pic =new ListView 自訂排版 主程式 : public class Main3Activity extends AppCompatActivity { ListView listview; // 先整理資料來源,listitem.xml 需要傳入三種資料 : 圖片 狗狗名字 狗狗生日 // 狗狗圖片 int[] pic =new int[]{r.drawable.dog1, R.drawable.dog2,

More information

運算子多載 Operator Overloading

運算子多載 Operator Overloading 多型 Polymorphism 講師 : 洪安 1 多型 編譯時期多型 ( 靜態多型 ) function overloading 如何正確呼叫同名的函數? 利用參數個數與型態 operator overloading 其實同 function overloading 執行時期多型 ( 或動態多型 ) 如何正確呼叫不同物件的相同名稱的成員函數 利用繼承與多型 2 子類別與父類別物件間的指定 (assignment)

More information

Microsoft Word - CPMidTerm2010SpringSolution

Microsoft Word - CPMidTerm2010SpringSolution 通識計算機程式設計期中考參考解答, 4/23/2010 1. (a) 宣告 double 變數 z, bool 變數 b, int 變數 i (3%) 答 : double z; bool b; (b) 在螢幕顯示一行字, 要求使用者輸入一個浮點數. (3%) 答 : Console.WriteLine(" 輸入一個浮點數 "); (c) 自鍵盤讀入一個浮點數., 並將其值存入已宣告之 double

More information

Microsoft PowerPoint - C-Ch12.ppt

Microsoft PowerPoint - C-Ch12.ppt 檔案的輸入 輸出 12-1 輸入 輸出的基礎 理解資料流 (stream) 的概念 在 C 語言中支援各種輸出入功能的概念, 就稱為資料流 執行附加格式的輸入 輸出 printf() 和 scanf() 是用來輸出 輸入的函數 必須先引入 stdio.h 檔案才能使用這些函數 這兩個函數會以固定的格式進行輸出入, 也可以使用各種不同的轉換規格 使用固定格式的輸出 輸入函數之範例 : int main(void)

More information

Microsoft PowerPoint - STU_C_Lang_CH03.ppt

Microsoft PowerPoint - STU_C_Lang_CH03.ppt 第 3 章 基本輸出函式及輸入函式 程式設計與生活 - 使用 C 語言 Shi-Huang Chen Spring 2013 1 第 3 章 基本輸出函式及輸入函式 3-1 資料輸出 3-2 資料輸入 3-3 發現問題 2 資料輸入與資料輸出是任何事件的基本元素 若資料輸入與資料輸出不是同時存在於事件中, 則事件的結果不是千篇一律 ( 因沒有資料輸入, 所以資料輸出就沒有變化 ), 就是不知其目的為何

More information

VB.Net

VB.Net VB.NET 視窗程式設計基本語法 : 變數宣告 NTU CSIE 講師 : 張傑帆 VB.NET 基本語法 在學習視窗程式之前我們需要先熟悉一下 Visual Basic 的基本語法, 包括 : 變數 運算子 選擇性結構 重複結構 陣列 程序 及結構化例外處理等語法 這些語法是程式邏輯的基礎, 也是程式和電腦硬體溝通, 並指揮電腦內部運作的橋梁 電腦五大單元 識別字 (Identifier) 程式

More information

Microsoft PowerPoint - ASP03.ppt

Microsoft PowerPoint - ASP03.ppt VB.NET 語法建立 ASP.NET 程式 資科系林偉川 物件的基本觀念 ASP.NET 是一種伺服端網頁技術, 本身並沒有專屬的程式語法, 預設是使用 VB.NET 語法,VB.NET 語言是一種支援.NET Framework 的物件導向程式語言 ASP.NET 主要是使用 VB.NET 語法和.NET Framework 類別的物件, 就算讀者不熟悉物件導向程式設計也沒有關係, 因為只需了解物件的基本觀念和如何使用

More information

Microsoft Word - 1-1泰宇解答

Microsoft Word - 1-1泰宇解答 學校 : 學年度第學期第次段考科目名稱命題教師 : 年 班座號 : 姓名 : 得分 : 一 單選題 : ( ). 設 (x x6) (D) x Ax Bx Cx6, 則 A B C (A)6 (B) (C) 解答 :D ( ). 求 (x x x)( x x ) 的展開式中, x 項的係數為何? (A) (B) (C)6 解答 :A (D)7 9 統測 ( ). 下列何者為多項式? (A) x (B)

More information

4. 如下的程式碼中, 宣告了類別 A3 和 B3 由於在兩個類別中都定義了 print() 的方法, 所以依據定義, 總共有兩次的 overloading 以及一次的 overriding public class A3 { public class B3 extends A3 { protect

4. 如下的程式碼中, 宣告了類別 A3 和 B3 由於在兩個類別中都定義了 print() 的方法, 所以依據定義, 總共有兩次的 overloading 以及一次的 overriding public class A3 { public class B3 extends A3 { protect 姓名 : 物件導向程式設計 (II) Spring 2010, 期中考 學號 : 是非題 : ( 每題 5 分 ) 注意 : 若答案為 非, 你必須提供正確的解釋才有分數 ; 否則, 以零分計 若有程式錯誤, 請回答 非 並指出錯誤 1. 如下的程式碼中, 宣告了類別 A1 和 B1 若在其他類別( 如控制類別 ) 執行 B1 b1 = new B1(5);, 則 a1 的值會改成 5 public

More information

Java Access 5-1 Server Client Client Server Server Client 5-2 DataInputStream Class java.io.datainptstream (extends) FilterInputStream InputStream Obj

Java Access 5-1 Server Client Client Server Server Client 5-2 DataInputStream Class java.io.datainptstream (extends) FilterInputStream InputStream Obj Message Transition 5-1 5-2 DataInputStream Class 5-3 DataOutputStream Class 5-4 PrintStream Class 5-5 (Message Transition) (Exercises) Java Access 5-1 Server Client Client Server Server Client 5-2 DataInputStream

More information

untitled

untitled 4.1AOP AOP Aspect-oriented programming AOP 來說 AOP 令 理 Cross-cutting concerns Aspect Weave 理 Spring AOP 來 AOP 念 4.1.1 理 AOP AOP 見 例 來 例 錄 Logging 錄 便 來 例 行 留 錄 import java.util.logging.*; public class HelloSpeaker

More information

Microsoft PowerPoint - 04-array_pointer.ppt

Microsoft PowerPoint - 04-array_pointer.ppt Array 與 Pointer Array Dynamical Memory Allocation Array( 陣列 ) 陣列是用來存放同樣型態的資料陣列的大小必須在程式中預先設定在程式執行中, 陣列的大小無法改變陣列中的資料是透過索引 (index) 來存取 一維陣列的宣告 type array_name[array_size]; int iarray[100]; /* an integer array

More information

使 用 Java 语 言 模 拟 保 险 箱 容 量 门 板 厚 度 箱 体 厚 度 属 性 锁 具 类 型 开 保 险 箱 关 保 险 箱 动 作 存 取 款

使 用 Java 语 言 模 拟 保 险 箱 容 量 门 板 厚 度 箱 体 厚 度 属 性 锁 具 类 型 开 保 险 箱 关 保 险 箱 动 作 存 取 款 JAVA 程 序 设 计 ( 肆 ) 徐 东 / 数 学 系 使 用 Java 语 言 模 拟 保 险 箱 容 量 门 板 厚 度 箱 体 厚 度 属 性 锁 具 类 型 开 保 险 箱 关 保 险 箱 动 作 存 取 款 使 用 Java class 代 表 保 险 箱 public class SaveBox 类 名 类 类 体 实 现 封 装 性 使 用 class SaveBox 代 表 保

More information

1 32 a + b a + b 2 2 a b a b 2 2 2 4a 12a + 9 a 6 2 4 a 12a + 9 a 6 ( 2a 3) 2 a 6 3 1 2 4 + 2 4 8 + 3 6 12 + 1 3 9 + 2 6 18+ 3 9 27 + 1 10 1 10 ax + by = 2 cx 7y = 8 1 2 1 4 1 8 1

More information

投影片 1

投影片 1 資料庫管理程式 ( 補充教材 -Part2) 使用 ADO.NET 連結資料庫 ( 自行撰寫程式碼 以實現新增 刪除 修改等功能 ) Private Sub InsertButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles InsertButton.Click ' 宣告相關的 Connection

More information

Microsoft PowerPoint - 02 C語言基本概述.ppt

Microsoft PowerPoint - 02 C語言基本概述.ppt 第二章 C 語言基本概述 C 語言的基本語法 關鍵字 vs. 識別字 各種程式錯誤 提高程式的可讀性 簡單的 C 程式 下面的程式碼可印出兩行字串 :. 簡單的例子 含括指令與標頭檔 (/) #include 是前置處理器的指令 #include 稱為含括指令 語法為 #include < 標頭檔 > 含括指令與標頭檔 (/) 含括動作前後的比較 : 前置處理器以標頭檔 (header file)

More information

untitled

untitled 不 料 料 例 : ( 料 ) 串 度 8 年 數 串 度 4 串 度 數 數 9- ( ) 利 數 struct { ; ; 數 struct 數 ; 9-2 數 利 數 C struct 數 ; C++ 數 ; struct 省略 9-3 例 ( 料 例 ) struct people{ char name[]; int age; char address[4]; char phone[]; int

More information

Visual C# 2005程式設計

Visual C# 2005程式設計 Visual Basic 2005 程式設計 第 4 章型別 變數 常數 列舉與運算子 4-1 型別 弱型別 (weakly typed) V.S. 強型別 (strongly typed) 弱型別語言 :PHP,JavaScript,VBScript( 變數不須先定義 0) 強型別語言 :VB 2005,C,C++,C#,Java 實值型別 (value type) V.S. 參考型別 (reference

More information

Microsoft PowerPoint - 02 C語言基本概述.ppt

Microsoft PowerPoint - 02 C語言基本概述.ppt 第二章 C 語言基本概述 C 語言的基本語法關鍵字 vs. 識別字各種程式錯誤提高程式的可讀性 1 2.1 簡單的例子 簡單的 C 程式 下面的程式碼可印出兩行字串 : 2 2.2 解析 C 語言 含括指令與標頭檔 (1/4) #include 是前置處理器的指令 #include 稱為含括指令 語法為 #include < 標頭檔 > 前置處理器以標頭檔 (header file) 的內容取代 #include

More information

(A)3 4 (B)5 6 (C)7 9 (D)10 2 (E) (A) (B) (C) (D) (E) ( ) ( ) ( ) (A) (B) (C) (D) (E) (A) (B) (C) (D) (E). (A) (B) (C) (D) (E). (A) (B) (C) (D) (

(A)3 4 (B)5 6 (C)7 9 (D)10 2 (E) (A) (B) (C) (D) (E) ( ) ( ) ( ) (A) (B) (C) (D) (E) (A) (B) (C) (D) (E). (A) (B) (C) (D) (E). (A) (B) (C) (D) ( . (A) (B) (C) (D) (E). (A) (B) (C) (D) (E) (A) (B) (C) (D) (E) (A) (B) (C) (D) (E).. (E) (A) (B) (C) (D). (A) (B) (C) (D) (E). (A) (B) (C) (D) (E). (A) (B) (C) (D) (E) (A) (C) (D) (E) (A) (B) (C) (D) (E)

More information

Microsoft PowerPoint - Fig03_Stack.ppt [相容模式]

Microsoft PowerPoint - Fig03_Stack.ppt [相容模式] 四 堆疊與佇列 (Stack & Queue) 4-. 串列及鏈結串列 4-. 用陣列結構實作堆疊 4-3. 用鏈結串列實作堆疊 4-4. 堆疊的應用 4-5. 佇列 4-6. 用陣列結構實作佇列 4-7 7. 用鏈結串列實作佇列 堆疊的基本觀念. 定義 : 4- 堆疊 當將東西疊成一堆, 而取用的時候由上方來取出. 特性 : 先進後出, 後進先出 ( 號球先放, 但 3 號球會先拿出 ) 3 3

More information

KillTest 质量更高 服务更好 学习资料 半年免费更新服务

KillTest 质量更高 服务更好 学习资料   半年免费更新服务 KillTest 质量更高 服务更好 学习资料 http://www.killtest.cn 半年免费更新服务 Exam : 310-055Big5 Title : Sun Certified Programmer for the Java 2 Platform.SE 5.0 Version : Demo 1 / 22 1. 11. public static void parse(string str)

More information

36 2013 6 29 2012 10 24 2012 12 1 93 1998 10 25 94 95 2001 12 12 96 2007 4 15 97 (1) 200.0 50.0 100.0 500.0 98 49% 5% 20% 25% 25% 25% 25% H 598,100,000 H 59,810,000 657,910,000 H 25.0% 10 2010 9 19 5%

More information

4

4 練習 9A ( 9. 特殊角的三角比 T ( 在本練習中, 不得使用計算機 如有需要, 答案以根式或分數表示. 試完成下表 三角比 θ 0 4 60 sin θ cos θ tan θ 求下列各數式的值 (. cos 60. sin 4 4. tan 4. cos0 4 tan 0 7. sin 4 cos 4 8. cos 60 tan 4 9. tan 60sin 0 0. sin 60 cos

More information

Microsoft PowerPoint - 資料庫程式設計教材.pptx

Microsoft PowerPoint - 資料庫程式設計教材.pptx 第三章 SQL 查詢指令 一 SELECT 指令設定查詢範圍 二 WHERE 子句的比較運算子 三 WHERE 子句的邏輯運算子 四 ORDER BY 排序子句 五 SQL 聚合函數 一 SELECT 指令設定查詢範圍 (1)SQL 查詢指令只有一個 SELECT 指令, 其基本語法如下所示 : SELECT 欄位 1, 欄位 2, 欄位 N FROM 資料表或檢視表 WHERE 查詢條件 上述 SELECT

More information

Microsoft Word - Prog doc

Microsoft Word - Prog doc 2. C/C++ 程式設計 2.1 編寫 C/C++ 的程式 (1). 主要程式架構 範例程式 #include main( ) { int i; i = 12; printf( It is %d \n,i); } main( ) 為主程式的進入點 ( 程式最先會先進入本 Function) 每一行的最後皆要加 ;" printf(..) 以指定的格式印出文字 標頭檔 c:\progra~1\visua~1\vc98\include\stdio.h...

More information

c_cpp

c_cpp C C++ C C++ C++ (object oriented) C C++.cpp C C++ C C++ : for (int i=0;i

More information

FY.DOC

FY.DOC 高 职 高 专 21 世 纪 规 划 教 材 C++ 程 序 设 计 邓 振 杰 主 编 贾 振 华 孟 庆 敏 副 主 编 人 民 邮 电 出 版 社 内 容 提 要 本 书 系 统 地 介 绍 C++ 语 言 的 基 本 概 念 基 本 语 法 和 编 程 方 法, 深 入 浅 出 地 讲 述 C++ 语 言 面 向 对 象 的 重 要 特 征 : 类 和 对 象 抽 象 封 装 继 承 等 主

More information

Microsoft Word - About_C_BitOperation.doc

Microsoft Word - About_C_BitOperation.doc (*) 位元的介紹位元 (binary digit: bit) 表示兩個值 :0 與 1 以一個 1 byte = 8 bits 為例, 一個位元可以表示兩個值 (0,1) ( 或者更廣義地說兩種狀態 ), 因此整個 byte ( 位元組 ) 的表示的範圍就是 2 8 =256 通常電腦在表示有正負號數值時會將最高位元 (msb: most significant bit 或最左位元 ) 當成符號位元,

More information

内 容 简 介 本 书 是 一 本 关 于 语 言 程 序 设 计 的 教 材, 涵 盖 了 语 言 的 基 本 语 法 和 编 程 技 术, 其 中 包 含 了 作 者 对 语 言 多 年 开 发 经 验 的 总 结, 目 的 是 让 初 学 的 读 者 感 受 到 语 言 的 魅 力, 并 掌

内 容 简 介 本 书 是 一 本 关 于 语 言 程 序 设 计 的 教 材, 涵 盖 了 语 言 的 基 本 语 法 和 编 程 技 术, 其 中 包 含 了 作 者 对 语 言 多 年 开 发 经 验 的 总 结, 目 的 是 让 初 学 的 读 者 感 受 到 语 言 的 魅 力, 并 掌 语 言 程 序 设 计 郑 莉 胡 家 威 编 著 清 华 大 学 逸 夫 图 书 馆 北 京 内 容 简 介 本 书 是 一 本 关 于 语 言 程 序 设 计 的 教 材, 涵 盖 了 语 言 的 基 本 语 法 和 编 程 技 术, 其 中 包 含 了 作 者 对 语 言 多 年 开 发 经 验 的 总 结, 目 的 是 让 初 学 的 读 者 感 受 到 语 言 的 魅 力, 并 掌 握 语

More information

Microsoft PowerPoint - 13_ClassAndObj.ppt

Microsoft PowerPoint - 13_ClassAndObj.ppt Visual Basic 2005 (VB.net 2.0) 程式設計 講師 : 戴志華 hana@arbor.ee.ntu.edu.tw 國立台灣大學電機工程研究所 第十三章 物件與類別 物件與類別 物件導向程式設計 物件與類別的建立 物件與類別 物件 (object) Ex. 人 屬性 (property) 身高 體重 血型 方法 (method) 走路 跑步 訊息 (message) 交談 事件

More information

C/C++语言 - C/C++数据

C/C++语言 - C/C++数据 C/C++ C/C++ Table of contents 1. 2. 3. 4. char 5. 1 C = 5 (F 32). 9 F C 2 1 // fal2cel. c: Convert Fah temperature to Cel temperature 2 # include < stdio.h> 3 int main ( void ) 4 { 5 float fah, cel ;

More information

Microsoft PowerPoint - P766Ch06.ppt

Microsoft PowerPoint - P766Ch06.ppt PHP5&MySQL 程式設計 第 6 章物件導向 6-1 認識物件導向 物件 (object) 或 案例 (instance) 屬性 (property) 欄位 (field) 或 成員變數 (member variable) 方法 (method) 或 成員函式 (member function) 事件 (event) 類別 (class) 物件導向程式設計 (OOP) 具有下列特點 : 封裝

More information

OOP with Java 通知 Project 4: 4 月 18 日晚 9 点 关于抄袭 没有分数

OOP with Java 通知 Project 4: 4 月 18 日晚 9 点 关于抄袭 没有分数 OOP with Java Yuanbin Wu cs@ecnu OOP with Java 通知 Project 4: 4 月 18 日晚 9 点 关于抄袭 没有分数 复习 类的复用 组合 (composition): has-a 关系 class MyType { public int i; public double d; public char c; public void set(double

More information

untitled

untitled 說 參 例 邏 邏 1. 說 2. 數 數 3. 8 4. 理念 李 龍老 立 1. 理 料 2. 理 料 3. 數 料 4. 流 邏 念 5. 良 6. 讀 行 行 7. 行 例 來 邏 1. 說 說 識 量 2. 說 理 類 3. 數 數 念 4. 令 5. 良 6. 流 邏 念 7. 說 邏 理 力 1. 2. 3. 4. 5. 列 念 1 參 1. ( Visual Basic 例 ) (1)

More information

javaexample-02.pdf

javaexample-02.pdf n e w. s t a t i c s t a t i c 3 1 3 2 p u b l i c p r i v a t e p r o t e c t e d j a v a. l a n g. O b j e c t O b j e c t Rect R e c t x 1 y 1 x 2 y 2 R e c t t o S t r i n g ( ) j a v a. l a n g. O

More information

Microsoft PowerPoint - Chap03.ppt [相容模式]

Microsoft PowerPoint - Chap03.ppt [相容模式] 本章目的 2D / 3D 遊戲程式設計入門使用 XNA 3.0 與 C# 探討 XNA 遊戲程式內部的基本架構與遊戲開發流程 示範如何完成一個簡單的 XNA 遊戲方案 第三章 XNA 遊戲程式基本架構 1 2 新增 XNA 專案 新增 XNA 專案 3 4 XNA 相關的命名空間 Game1.cs 程式中的六個函數 using Microsoft.Xna.Framework; // 和 XNA 架構相關的型別

More information

Python a p p l e b e a r c Fruit Animal a p p l e b e a r c 2-2

Python a p p l e b e a r c Fruit Animal a p p l e b e a r c 2-2 Chapter 02 變數與運算式 2.1 2.1.1 2.1.2 2.1.3 2.1.4 2.2 2.2.1 2.2.2 2.2.3 type 2.2.4 2.3 2.3.1 print 2.3.2 input 2.4 2.4.1 2.4.2 2.4.3 2.4.4 2.4.5 + 2.4.6 Python Python 2.1 2.1.1 a p p l e b e a r c 65438790

More information

OOP with Java 通知 Project 4: 5 月 2 日晚 9 点

OOP with Java 通知 Project 4: 5 月 2 日晚 9 点 OOP with Java Yuanbin Wu cs@ecnu OOP with Java 通知 Project 4: 5 月 2 日晚 9 点 复习 类的复用 组合 (composition): has-a 关系 class MyType { public int i; public double d; public char c; public void set(double x) { d =

More information

Microsoft Word - 投影片ch12

Microsoft Word - 投影片ch12 Java2 JDK5.0 教學手冊第三版洪維恩編著博碩文化出版書號 pg20210 本章學習目標 學習如何分割檔案 第十二章大型程式的發展與常用的類別庫 認識類別庫, 以及如何取用在不同類別庫裡的類別 建構 package 的階層關係 學習 Java 裡常用的類別庫 大型程式的發展與常用的類別庫 12-2 12.1 檔案的分割 分割檔案的實作 : 1. 依序建立兩個類別檔案, 並置於同一個資料夾內

More information

CHAPTER 1

CHAPTER 1 CHAPTER 1 1-1 System Development Life Cycle; SDLC SDLC Waterfall Model Shelly 1995 1. Preliminary Investigation 2. System Analysis 3. System Design 4. System Development 5. System Implementation and Evaluation

More information

Fun Time (1) What happens in memory? 1 i n t i ; 2 s h o r t j ; 3 double k ; 4 char c = a ; 5 i = 3; j = 2; 6 k = i j ; H.-T. Lin (NTU CSIE) Referenc

Fun Time (1) What happens in memory? 1 i n t i ; 2 s h o r t j ; 3 double k ; 4 char c = a ; 5 i = 3; j = 2; 6 k = i j ; H.-T. Lin (NTU CSIE) Referenc References (Section 5.2) Hsuan-Tien Lin Deptartment of CSIE, NTU OOP Class, March 15-16, 2010 H.-T. Lin (NTU CSIE) References OOP 03/15-16/2010 0 / 22 Fun Time (1) What happens in memory? 1 i n t i ; 2

More information

B4C2

B4C2 - ( )( ) B=A A A k A A A k (B)=(A )+(A )+ +(A k ) (B) B A A A k B (Patitios) Ex. 6 4 As. ()(A )=(U) (A) ()(A B )=((A B) )=(U) (A B) (DeMoga). (A-B)=(A) (A B) Ex. A={x x N x 0 6 } B={x x=0k k Z} (A B)=

More information

Microsoft Word - 01.DOC

Microsoft Word - 01.DOC 第 1 章 JavaScript 简 介 JavaScript 是 NetScape 公 司 为 Navigator 浏 览 器 开 发 的, 是 写 在 HTML 文 件 中 的 一 种 脚 本 语 言, 能 实 现 网 页 内 容 的 交 互 显 示 当 用 户 在 客 户 端 显 示 该 网 页 时, 浏 览 器 就 会 执 行 JavaScript 程 序, 用 户 通 过 交 互 式 的

More information

E. (A) (B) (C) (D). () () () (A) (B) (C) (D) (E). () () () (A) (B) (C) (D) (E). (A)(B)(C) (D) (E) (A) (B) (C) (D) (E) (A) (B)(C) (D) (E). (A) (B) (C)

E. (A) (B) (C) (D). () () () (A) (B) (C) (D) (E). () () () (A) (B) (C) (D) (E). (A)(B)(C) (D) (E) (A) (B) (C) (D) (E) (A) (B)(C) (D) (E). (A) (B) (C) . (A) (B) (C) (D) (A) (B) (C)(D)(E). (A) (B) (C) (D) (E) (A) (B) (C) (D). (A) (B) (C) (D) (E) (A) (B) (C) (D) (E). (A) (B) (C) (D) (E). (A) (B) (C) (D) (E). (A) (B) (C) (D) (E) (A) (B) (C) (D) (E). (A)

More information

Microsoft PowerPoint - SE7ch07.ppt

Microsoft PowerPoint - SE7ch07.ppt 第七章物件導向設計 : 類別與物件 課前指引在本章中, 我們將正式進入物件導向程式設計的領域, 雖然我們在前面章節, 已經使用過某些 Java 類別庫的類別或物件 ( 例如 :Math 類別 String 物件 ), 但卻未曾學習如何建立一個物件 ( 事實上建立物件必須先宣告類別 ) 在本章中, 我們將從頭教您如何使用 Java 並以物件觀點設計程式, 逐漸體驗物件導向程式設計帶來的好處, 尤其是在發展中大型專案時,

More information

1 2 / 3 1 A (2-1) (2-2) A4 6 A4 7 A4 8 A4 9 A ( () 4 A4, A4 7 ) 1 (2-1) (2-2) ()

1 2 / 3 1 A (2-1) (2-2) A4 6 A4 7 A4 8 A4 9 A ( () 4 A4, A4 7 ) 1 (2-1) (2-2) () (39mm E-Mail ( )( ), : : 1 1 ( ) 2 2 ( ) 29mm) WSK ( 1 2 / 3 1 A4 2 1 3 (2-1) 2-1 4 (2-2) 2-2 5 A4 6 A4 7 A4 8 A4 9 A4 10 11 ( () 4 A4, 5 6 7 8 A4 7 ) 1 (2-1) (2-2) () 1 2 (2-1) 3 (2-2) 4 5 6 7 (8 ) 9

More information

運算子多載 Operator Overloading

運算子多載 Operator Overloading 多載 Overloading 講師 : 洪安 1 多型 編譯時期多型 ( 靜態多型 ) function overloading 函數多載 如何正確呼叫同名的函數? 利用參數個數與型態 operator overloading 運算子多載 其實同 function overloading 執行時期多型 ( 或動態多型 ) 如何正確呼叫不同物件的相同名稱的成員函數 利用繼承與多型 2 函數多載 Function

More information