Thinking in Java讀書筆記――數組

來源:互聯網
上載者:User
 

<Thinking in Java> 讀書筆記 ――數組  數組只是相同類型的,用一個標誌符名稱封裝到一起的一個對象序列或基礎資料型別 (Elementary Data Type)序列。 數組的初始化在java中,定義數組的格式可以是以下兩種方式:int[] a1;int a[];兩種方式結果相同,以上只是定義了一個數組的引用,此時編譯器不允許指定數組的大小,因為現在擁有的只是對數組的一個引用,並沒有為數組分配任何空間。即如下方式定義是錯誤的:int[5] a;int a[5];若產生的是一個基礎資料型別 (Elementary Data Type)的數組,則java預設將數組中的每個元素設為0(若為boolean型,則設為false),若聲明的是一個對象數組,則如下語句:Object[] obj=new Object[10];並沒有完成初始化工作,必須為obj的每個元素賦值,初始化進程才算完成。 數組的複製在java中可以將一個數組值賦給另一個數組值,所以可以有如下寫法:int[] a1=new int[5];
         int[] a2;
         a2=a1;其實,真正做到的只是複製了一個引用,使a2指向a1的首地址。此時若a1中元素值改變,則a2中對應元素也必然會改變。可用如下例子進行驗證:      int[] a1=new int[5];
              for(int i=0;i<a1.length;i++)
                     a1[i]=i;
              int[] a2;
              a2=a1;
              for(int i=0;i<a2.length;i++)
                     a2[i]++;
              for(int i=0;i<a1.length;i++)
                     System.out.println("a1["+i+"]="+a1[i]);輸出結果依次為:1,2,3,4,5,可以發現a2中元素改變,a1中元素跟著改變。如果想使a2與a1無關聯,即a1的值賦給a2後,a1中元素再改變,a2中對應元素不受影響,可以使用如下方法:      int[] a1=new int[5];
              for(int i=0;i<a1.length;i++)
                     a1[i]=i;
              int[] a2 = new int[5];
              System.arraycopy(a1,0,a2,0,a1.length);
              for(int i=0;i<a2.length;i++)
                     a2[i]++;
              for(int i=0;i<a1.length;i++)
                     System.out.println("a1["+i+"]="+a1[i]);此時,輸出結果將依次為:0,1,2,3,4但是需要注意的是,如果用System.arraycopy()方法,則a2必須被初始化。否則,會報出null 指標的異常。利用System.arraycopy()方法複製要比利用for()迴圈複製數組快很多。 數組的比較排序數組的比較排序,可以直接利用Arrays.sort()方法,不需要自己寫函數,如要實現一個字串數組的正序排列,則用如下程式即可:        String[] b2=...{"b","e","c","d"};
        Arrays.sort(b2);
        for(int i=0;i<b2.length;i++)
            System.out.println("b2["+i+"]="+b2[i]);若要實現反序排列,則可以使用如下方式: 

      String[] b1=...{"b","e","c","d"};
       Arrays.sort(b1,Collections.reverseOrder());
       for(int i=0;i<b1.length;i++)
              System.out.println("b1["+i+"]="+b1[i]);

筆者以前曾經為了實現字串數組排序,自己寫了個方法,參考:java中字串操作方法整理,顯然那個方法更麻煩一些。其它Arrays中還有兩個方法值得注意,分別是:Fill()用於以某個值填充整個數組binarySearch()用於在排好序的數組中尋找某個元素。

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.