我學習使用java的一點體會(3) (轉)

worldblog發表於2008-01-29
我學習使用java的一點體會(3) (轉)[@more@]
  • 基本類庫的學習

  曾經面試過一些java員,我出的題目是在使用java時,經常用到哪些類,在哪個包裡。很少有人能答好,甚至有人做了2年java程式都沒有回答出,他們會用java,但必須依賴工具(指java整合開工具),我覺得他們可以編寫出程式,但不能編寫出特別好得程式。

  我認為作為java程式設計師必須掌握java類庫的兩個包:java.lang和java.util這兩個包。java.lang包提供的是java要用到的基本類包,java程式設計師天天在用,無非是看別人如何用,自己就如何用,但很少有人去總結一下,比如String 和StringBuffer這兩個類有什麼差別,應該有很多java程式設計師說不出來。另外Vector和HashMap這兩個類大家都在用,有多少人能說清楚Vector和HashMap繼承了哪些類,實現了哪些介面呢。

  1. 理論學習。認真閱讀java 的以下內容:java.lang包中的String,StringBuffer,Number,Double,Float,Byte,Short,Integer,Long,Character,Boolean,Process,Runtime,System,,Cloneable,Class,Claoader,Thread,ThreadGroup,Runnable,Package類或介面。java.util包中的Collection,list,Set,ArrayList,LinkedList,Hashset,TreeSet,Iterator,Map,SortedMap,HashMap,TreeMap,Comparator,Arrays,Enumeration,Vector,Stack,Dictionary,Hashtable,Properties,StringTokenizer,BitSet,Date,Calendar,Locale,Ran,Observer,Observable類和介面。主要理清楚這些類或介面的繼承關係、主要功能。
  2. 演繹階段。透過閱讀程式碼,練習程式設計,學習並應用這些類和介面。其實這些類的大部分是經常用的,無非對這些類和介面說不清楚。在這些類中,對java.lang和java.util包中的類,最好將各個方法練習使用一次。而對java.util包中Collections 中的類,最好理清楚各個類和介面之間的關係。常用的類的方法我就不具體介紹了,我舉一個使用Observer和Obserable 的例子(摘自《The Complete Reference Java 2 》)。在Observer和Obserable中,java實現了對設計Observer的支援。

      Watcher.java程式碼

    import java.util.*;

    class Watcher implements Observer
    {
     public void update(Observable obj, Object arg )
     {
     System.out.println("Update() called, count is " +
     ((Integer) arg).intValue());
     }
    }
     

      BeingWatched.java程式碼

    import java.util.*;

    class BeingWatched extends Observable
    {
     void counter( int period )
     {
     for(;period >=0; period-- )
     {
     setChanged();
     notifyObservers( new Integer ( period ) );
     try
     {
     Thread.sleep(100);
     }
     catch( InterruptedException e)
     {
     System.out.println("Sleep interrupeted" );
     }
     }
     }
    };

      ObserverDemo.java程式碼

    public class ObserverDemo
    {
     public static void main( String[] args )
     {
     BeingWatched observed = new BeingWatched();
     Watcher observing = new Watcher();
     observed.addObserver( observing);
     observed.counter(10);
     }
    };

    結果

    Update() called, count is 10
    Update() called, count is 9
    Update() called, count is 8
    Update() called, count is 7
    Update() called, count is 6
    Update() called, count is 5
    Update() called, count is 4
    Update() called, count is 3
    Update() called, count is 2
    Update() called, count is 1
    Update() called, count is 0

  3. 歸納階段。總結使用,體會這兩個包中類的繼承關係,對設計模式的支援(如Iterator本身就是設計模式,同時也是工廠方法模式的應用),瞭解這些類提供的所有功能,比較功能相近類的異同。將這些類的api記在心中。

  雖然整合開發環境支援方法提示功能,但我個人認為,對於java.lang和java.util這兩個包的api應當熟記於心,java的其他類庫在使用時可以查詢api。當然如果從事不同的開發,對其他類庫應當有相應的瞭解,如開發,就應當對javax.swing包瞭如執掌,開發b/s結構的程式,就要了解javax.,依個人的應用來開發了。

(未完)


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752043/viewspace-998696/,如需轉載,請註明出處,否則將追究法律責任。

相關文章