JAVA 語言簡介
 JAVA 是一種一般用途 object - oriented programming language ( 物件導向程式語言 )
 提供許多的延伸功能,支援發展 GUI ( 圖形使用者介面 ) 應用程式
 JAVA CC++ 引入 syntax ( 語法 ) 和 variable scooping model ( 變數範圍模式 ),並Object
  - C 中摘取其 interface 的概念,以及SmallTalk3 導入 runtime extensibility 、動態記憶體管理、
 執行 multithreading
 【特徵】
  •Java 是一種 interpreted language ,可在具有 Java interpreterruntime 環境的平台上執
   行 Java 程式。
  •JavaInternet programming ,而 C++system programming
  •Java 使用 Bytecode 來解決 Security ( 安全性 ) 和 portability ( 可攜性 ) 這兩個在 Inter
   -net 常見的問題
  •Java 不提供 goto statement,取而代之,它提供 breakcontinue statementsexception
   handling ( 例外處理 ) 。
  •不使用 header files ,消除 C preprocessor ( 先行處理器 ) 。
  •Java 不使用 pointers ( 指標 )
  •Java 並沒有 structures ,且 arrays ( 陣列 ) 和 string ( 字串 ) 都是 object
  •Javaclass 架構是屬於 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-processparent process 可同時執行。而這個 sub-process 就是 thread
  •Java 是一種 distributed language
  •Java 支援 recursion ( 遞迴 ) 。即允許 method 呼叫自己
  •Java 提供例外處理 ( exception handling ) 的能力 
基本資料型態
 Java data type 可分為兩類:simplecomposite ( 或 primitivereference )
 Simple Type 包括 integer , floating point , Booleancharacter types 等。
 Composite Type 是以 Simple Type 為基礎,包括 string , array 以及 classesinterface
參數的傳遞方式
 一般而言,電腦語言有兩種方法傳遞參數給副程式 ( subroutine ) 。一種是 call by value ,另一種是
 call by reference
 但在 Java 裡,當傳遞 simple typemethod 時,它就採用 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 發生時,代表該 exceptionobject 被產生,並且產生 errormethod
 會將它 thrown ( 拋出 ) 。

 Java exception handling 是透過五個 keywordstry , catch , throw , throwsfinally 來管理。
 其動作如下:
 首先,將用來監視 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
   }
 }