[公告] Java講義5 -- 喝咖啡, 講清楚, 說明白 tsaiwn@csie.nctu.edu.tw 看過了 Java Applet 的說明以及Java Application範例之後, 應該發現Java程式 跟C++程式真的太像了。 現在就靠近一點來看: * 用 Java 寫的程式應該要以 .java 結尾, 用 Java 編譯器將之編譯成 .class 結尾的 bytecode 檔案以便能被 Java 的虛擬機直譯器(JVM Interpreter)來執行。 * Java 程式可分成 Application, Applet, 和 Servlet 三種。 - Application 就是可以獨立拿來執行的程式; - Applet 程式要配合HTML 檔讓 Browser 由 Server 端抓到內建Java VM之瀏覽器執行 - Servlet 程式也要配合HTML檔, 但是並不會被抓到瀏覽器端, 而是在WEB Server端執行 * 每一個 .java 程式的最外層依序為: (注意依序!) 1) 最多一個的 package 宣告(沒寫表示屬於 default package) (如前所述, Java 把一些相關的 class 一起放在一子目錄下叫做 package) 2) 可有不限數量的 import 指述以使程式中用到別的class的指述可寫得較為簡短 3) 一個或多個 class 或 interface * 每一個 .java 程式內雖可有很多class, 但最多只可以有一個 public 的 class, 且這個程式檔名必須與該public 的 class 名稱相同, 大小寫也要一樣! 編譯完的 .class 檔之名稱也不可再改名。 * Java 的命名原則(當然, 不遵守也不會怎樣啦:-) -- class 和 interface 之名稱宜用名詞, 且每個英文單字的頭要大寫 例如 MyFirstProgram, BigAnimal, BigInteger -- method 名稱宜用動詞, 第一個字母用小寫(Constructor例外), 其它單字的頭大寫 例如 getMySalary, doSomething, toString, print -- 變數, 個體(object, 或稱物件)的名稱也是第一個字母用小寫, 其它單字的頭大寫 例如 mySalary, myHeight, currentStudent, height -- 原始型別的常數宜用全大寫, 必要時隔以底線號(underscore) 例如 MAX_LIMIT, MIN_LIMIT, NUMBER_OF_STUDENT -- 個體(物件)常數可大小寫混用, 例如 Last_Student, LAST_Person * Java 的保留字共有 50 個 (參考http://java.sun.com/ 站內的 Java 語言規格書) 本來保留字(reserved word)和關鍵字(keyword)意義不同, 但Java文件並不特別區分, 雖稱為 keyword, 實則為保留字, 不可用作規定以外的用途! 這 50 個保留字絕大部份抄自C++, 包括不能用的 const 和 goto 也是保留字。 abstract default if private throw boolean do implements protected throws break double import public transient byte else instanceof return try case extends int short void catch final interface static volatile char finally long super while class float native switch false const for new synchronized true continue goto package this null 最右邊的false, true, null 事實上是文字常數(literal), 有些人不將之算入保留字。 注意是小寫喔! 這和一般C/C++程式員的習慣不同(如#define FALSE 0 ) * Java 的八大原始型態(Primitive Date Type; 型別) (Literal寫法與C/C++相同) 不知是巧合還是 .. 大陸有江八點, 台灣有八大行業, 阿Java 剛好有八種原始資料型態 (還有八仙過海, 江南八怪, 八大胡同, ㄟ..都是八, 真是傑克..阿太神奇了:-) boolean(佔用 1 bit, false, true), char(16 bits unsigned, 使用 Unicode) byte(8 bits), short(16 bits), int(32 bits), long(64 bits), float(32 bits), double(64 bits), both compliant with IEEE 754 3.14D 和 3.14 是 double, 3.14f 和 3.14F 是 float, 123L 是 long * Java中任何東東(包括Primitive Type)的 array 一律為 object, 只是個"reference" 阿就是說array和任何object宣告後並不會自動creat, 一定要用 new 才能生出來 * Java 的控制指述 (Control statements)與 C/C++ 大致相同, 除了: -- 控制流程的運算式是 boolean 運算式 (C/C++ 可為任何運算式) 包括 if() 和 while()的括號內, for(;;)括號中兩個分號中間都須為boolean運算式 所以如果k是整數, if(k)... 在Java是錯的, 要寫成 if(k!=0)... -- loop 之前可帶有 Label, 以便讓 break 和 continue 配合使用; 例如: haha: while(true){ for(...){ if(...) break haha; //跳到"//while尾"的下一statement } // ...注意, break haha; 不是 break 到這喔 } // while尾