Java(2012/1/31)

一、常量

       1)常量命名規則:所有單詞的字母都是大寫,如果有多個單詞,那麼使用下劃線連接即可。比如說:public static final int AGE_OF_PERSON;    

       2)在Java中聲明final常量時通常都會加上static關鍵字,這樣對象的每個實例都會訪問唯一一份常量值。

 

二、IDE(Integrated Development Environment):集成開發環境

        1)NetBeans

        2)JBuilder

        3)Intellij IDEA

        4)Eclipse(日蝕、月食)

 

三、Java集合接口,學習目標:a.理解Java集合框架  b.熟練使用java.util包中的相關類於接口進行編程開發 c.改善程序性能,今後進行程序編寫時將大量使用集合類與相關接口

       List:ArrayList和LinkedList 

      1)集合中存放的依然是對象的引用而不是對象的本身,無法放置原生數據類型,我們需要使用原生數據類型的包裝類才能加到集合當中。

       2)集合當中放置的都是Object類型,因此取出來的也是Object類型,那麼必須要使用強制類型轉換將其轉爲真正的類型(放進去的類型)。

       3)ArrayList底層採用數組實現,當採用不帶參數的構造方法生成ArrayList對象時,實際上會在底層生成一個長度爲10的Object類型數組;如果增加的元素個數超過了10個,那麼ArrayList底層會新生成一個數組,長度爲原數組的1.5倍+1,然後將原數組的內容複製到新數組當中,並且後續增加的內容都會放到新數組當中。當新數組無法容納增加的元素時,重複該過程。   //ArrayList的插入和刪除代價比較高

       4)ArrayList和LinkedList區別

             a) ArrayList底層採用數組實現(順序結構),LinkedList底層採用雙向鏈表實現。

             b)當執行插入或者刪除操作時,採用LinkedList比較好。

             c)當執行搜索操作時,採用ArrayList比較好。 

             d)當向ArrayList添加一個對象時,實際上就是將該對象的引用放置到了ArrayList 底層所維護的數組當中;當向LinkedList中添加一個對象時,實際上LinkedList內部會生成一個Node對象,該對象結構爲:           

              private static class Node<E> {
                       E item;                            //對象的引用
                       Node<E> next;              //後繼
                       Node<E> prev;             //前驅

                       Node(Node<E> prev, E element, Node<E> next) {
                       this.item = element;
                       this.next = next;
                       this.prev = prev;
               }
    }

                 LinkedList中所維護的是Node對象,而不是所添加的對象。

 

四、用LinkedList構造棧和隊列:棧的功能(入棧,出棧,查看棧頂元素,判斷棧是否爲空),隊列的功能(入隊,出對,判斷隊是否爲空)

      棧:

         public class StackTest
         {
                     LinkedList data = new LinkedList();
                     int size = 0;
                     public void push(Object o)           //入棧
                     {
                                 size++;
                                 data.add(o);
                     }
    
                     public Object pop()          //出棧
                     {
                                 size--;
                                 return data.removeLast();
                     }
 
                    public Object peek()         //查看棧頂元素
                    {
                                 return data.peekLast();
                    }
   
                    public boolean isEmpty()      //判斷棧是否爲空
                    {
                                 if(size == 0)
                                        return true;
                                 else
                                        return false;
                     }
          }

         隊列:

         public class QueueTest
         {
                     LinkedList data = new LinkedList();
                     int size = 0;

                     public void enQueue(Object o)
                     {
                                 size++;
                                 data.add(o);
                     }
    
                     public Object deQueue()
                     {
                                 size--;
                                 return data.removeFirst();
                     }
   
                     public boolean isEmpty()
                     {
                                 if(size == 0)
                                           return true;
                                 else
                                           return false;
                      }

           }

 


 

 

        

   

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章