| JAVA
語言簡介 |
|
| JAVA 是一種一般用途 object - oriented
programming language ( 物件導向程式語言 ), |
| 提供許多的延伸功能,支援發展 GUI ( 圖形使用者介面 ) 應用程式。 |
|
| JAVA 由 C 和 C++
引入 syntax ( 語法 ) 和 variable
scooping model ( 變數範圍模式 ),並由
Object |
| - C 中摘取其 interface 的概念,以及由
SmallTalk3 導入 runtime
extensibility 、動態記憶體管理、 |
| 執行 multithreading 。 |
|
| 【特徵】 |
|
| •Java 是一種 interpreted
language ,可在具有 Java
interpreter 及 runtime 環境的平台上執 |
| 行 Java
程式。 |
| •Java 是 Internet
programming ,而 C++ 是 system programming 。 |
| •Java 使用 Bytecode 來解決 Security ( 安全性 ) 和 portability (
可攜性 ) 這兩個在 Inter |
| -net 常見的問題。 |
| •Java 不提供 goto
statement,取而代之,它提供 break 和
continue statements 及 exception
|
| handling (
例外處理 ) 。 |
| •不使用
header
files ,消除 C preprocessor (
先行處理器 ) 。 |
| •Java 不使用 pointers ( 指標 )
。 |
| •Java 並沒有 structures ,且 arrays ( 陣列 ) 和 string ( 字串 ) 都是
object 。 |
| •Java 的 class 架構是屬於 single inheritance class ( 單一繼承的架構 )
。即每一個 class |
| 一次只能繼承另一個 class
,而非同時多個 classes 。而 C++
則允許多重繼承。 |
| •Java 不支援 C - Style 隱含性宣告,它要求顯性的宣告
method 。 |
| •Java 在記憶體的管理上,是採用垃圾收集法 ( garbage
collection ) ,以防止記憶體的短 |
| 缺。 |
| •在程序 ( procedure )
的呼叫上,Java 採用 Call by Name 的方式,有別於一般電腦語言的
|
| Call by address
。 |
| •提供 Multi - thread 的功能。 |
| PS. |
| 所謂的 Multi - thread
就是指每一個 process 可再產生 sub-process 來執行某部份程式碼, |
| 並且 sub-process 與
parent process 可同時執行。而這個 sub-process 就是 thread
。 |
| •Java 是一種 distributed language
。 |
| •Java 支援 recursion ( 遞迴
) 。即允許 method 呼叫自己。 |
| •Java 提供例外處理 ( exception handling )
的能力 |
|
| 基本資料型態 |
|
| Java data type
可分為兩類:simple 和 composite (
或 primitive 和 reference
) |
| Simple Type 包括 integer , floating point , Boolean
和 character types 等。 |
| Composite Type 是以
Simple Type 為基礎,包括 string
, array 以及 classes 和 interface 。 |
|
| 參數的傳遞方式 |
|
| 一般而言,電腦語言有兩種方法傳遞參數給副程式 ( subroutine ) 。一種是 call by value
,另一種是 |
| call by reference
。 |
|
| 但在 Java 裡,當傳遞 simple type 給 method 時,它就採用 call by value
。如下: |
|
| 【例】 |
|
| // File Name :
CallByValue.java |
| // simple types are passed
by value |
| class Test
{ |
| void meth ( int j , int k
) { |
| j *= 2
; |
| k /= 2
; |
| } |
| } |
|
| class CallByValue
{ |
| public static
void main ( String args[ ] ) { |
| Test
obj = new Test ( ) |
| int j
= 18 , k = 28 ; |
| System.out.println ( " j and k before call :
" + j + " " + k ) ; |
| obj.meth (
j , k ) ; |
| System.out.println ( " j and k after call : "
+ j + " " + k ) |
| } |
| } |
|
| 執行結果: |
|
| j and k before call : 18 28 |
| j and k after
call : 18 28 |
|
| 若是傳遞某個 object 給 method 時,objects 是以 call by reference
方式來傳遞。 |
| 如下: |
|
| 【例】 |
|
| // File Name :
CallByRef.java |
| // Object are passed by
reference |
|
| class Test
{ |
| int a , b
; |
|
| Test ( int j
, int k ) { |
| a = j
; |
| b = k
; |
| } |
|
| void meth (
Test o ) { // pass an
object |
| o.a *= 2
; |
| o.b /= 2
; |
| } |
| } |
|
| class CallByRef
{ |
| public static
void main ( String args [ ] ) { |
| Test obj =
new Test ( 18,28 ) ; |
| System.out.println ( "
obj.a and obj.b before call : "+ obj.a + " " +
obj.b ) ; |
| obj.meth ( obj )
; |
| System.out.println ( "
obj.a and obj.b after call : " + obj.a + " " +
obj.b ) ; |
| } |
| } |
|
| 執行結果: |
|
| obj.a and
obj.b before call : 18 28 |
| obj.a and
obj.b after call : 36 14 |
|
| Java
的例外處理 ( exception handling ) |
|
| Java exception 是一個 object 。它描述某段程式碼所發生的例外狀況 ( exceptional condition ) |
| 。當 exceptional
condition 發生時,代表該 exception 的 object 被產生,並且產生 error 的 method |
| 會將它 thrown ( 拋出 )
。 |
|
|

|
|
| Java exception
handling 是透過五個 keywords :try , catch ,
throw , throws 和 finally
來管理。 |
| 其動作如下: |
| 首先,將用來監視 exceptions
的程式敘述句 ( program statements ) 擺在 try block 內。如果該 |
| try block 內發生 exception 它就被拋出。利用 catch 將這個
exception 抓住 ( catch )
。並以某種 |
| 妥善的方法來處理。 |
| 系統產生的 exception 會被
Java run-time system 自動拋出。使用 keyword throw 人工地拋出,任 |
| 何被 method 拋出的 exception 必需經由 throws
clause 來描述。在某個 method 返回前務必執行的 |
| 程式碼,則擺在 finally block
內。 |
|
| 底下是 exception - handling
block 的一般型式: |
|
| try { |
| //
監視可能發生錯誤的程式碼區塊 |
| } |
| catch ( Exception Type1
exOb ) { |
| // exception
handler for exception Type1 |
| } |
| catch ( Exception Type2
exOb ) { |
| // exception
handler for exception Type2 |
| } |
| finally
{ |
| // block of code to
be executed before try block ends |
| } |
| } |
|