因為要做presentation,把自己隨手做的手稿post出來
希望各位網友不吝指正,謝謝.
Java程式設計
Introduction
Java虛擬機器的觀念
Java虛擬機器和一般傳統環境不同的是因為Java要達到它最重要的跨平台功能.
一般程式語言的方式是編譯出目的檔或可執行檔.
然後由作業系統載入,以行程(process)的方式配合系統呼叫(System call)
和作業系統及硬體溝通.
而Java則是編譯出類別物件檔(.class)然後在使用者client端透過Intepreter
或支援Java的Browser建立一個Java虛擬機器,並由該虛擬機器和使用者的
"任何"作業系統或硬體溝通.以達到跨平台的效果
接下來先簡單介紹一下Java這個語言的特色
@ 程式結構方面,Java單一原始碼檔(.java)可含有多個物件(class)或
介面(interface),但一個檔中只有一個物件可被定義為公用(public)
@ 沒有全域變數或函數,所有的定義或宣告都在物件中,沒有程序式語言最重要的
函數,更落實了物件導向程式語言的觀念.皆以物件的方法(method)取代之.
@ 程式包裹(package),包含了公用物件或介面,都是有一般標準的,以提高程式
可讀性,每個人所引用的程式包裹不會有不相容的情形發生,也不用像C,
看程式必須去讀.C檔外還須讀該程式師的.h檔.故Java去除了前置處理器
(preprocessor),而以import指令取代
ex.import java.awt.* 引入java.awt這個packcage
import java.awt.Graphics 引入java.awt這個package中的Graphics物件
沒有了程序式語言循序執行的特色,Java物件該如何操作呢?
C++中對每個物件定義建構子(constructor)和解構子(destructor)
Java因為管理記憶體的方式和C++不同,因為安全性的問題,不須由程式師負責
釋放或收回記憶體的工作,而全部由系統來管理,稱為"垃圾收集"法(garbage
collection),所以,Java仍然保留建構子,而沒有了解構子,但可以覆寫(override)
"結束"(finalize)這個method完成garbage collection所無法完成的工作,也
可以呼叫finalize(),來提早釋放等待被garbage collection回收的物件
Java的資料型態
Java的資料型態可分為兩類,但全部都可視為物件,
@ 一種是簡單型態,這種型態的儲存大小都是已經定義好的
(1)byte(8 bit) (2)short(16 bit) (3)int(32 bit) (4)long (64 bit) (5)float(32 bit) (6)double(64 bit)
(7)char(16 bit 採Unicode以對應多國語言) (8)boolean(True/False)
@ 另一種是組合型態,Java中的物件以參考型態方式實現,物件實體必須明確的
以new宣告,以分配記憶體空間,且每個物件都是Object的子物件(當然Object
本身是個例外)
* 陣列(Array)
Java沒有了指標,陣列該如何完成呢?在Java中,陣列依然是一個物件
但何其他物件不同的是,陣列無法明顯的作為任一物件的子物件
且都有一個物件實體"length"
ex.int[] intarray = new int[256];
System.out.println(intarray.length);
和C,C++不同的則是Java的陣列無法動態的改變大小,在宣告時已確定
* 類別物件(class)
命名:以" 程式包裹名稱.類別物件名稱 "格式
宣告:以[修飾子] class "類別物件名稱" [extends 父類別物件名稱]
[implements 介面名稱 {,介面名稱}]
雖然Java沒有了C++中的多重繼承,但可引入多個介面來達成相同目的
* 介面(interface)
interface可說是為了解決Java去除了多重繼承的缺點,但又希望能達到C++多重
繼承的威力,而設計的一種抽象資料型態,interface和abstract class相同,
不能產生instance,且其中的method也沒有implement,只有name,modifier和傳回型態
其中所有的資料,method等都是static的,舉個例來說,如果要建立一個"鯨魚"的類別
則必須由"哺乳類"繼承而來,但鯨魚又有許多魚的特性,則implement魚的interface
然後在鯨魚的class中實作這些魚的method
--
▍ ╭─────────╮
⊿≡﹢ ∠ ,我來煩你啦!
█ ▍ α ╰─────────╯
█◣ ˍˍˍ≠︻~ ~ ~
ˍˍˍˍ◢██▇█▇▆▅▄▃▂◎◥◎ˍˍ ˍ ˍ ˍˍ ˍˍˍ ˍˍ ˍ ˍˍˍˍ
--
※ 發信站: 批踢踢實業坊(ptt.twbbs.org)
◆ From: javatea.m1.ntu.