無線&移動互聯網技術研發

          換位思考·····
          posts - 19, comments - 53, trackbacks - 0, articles - 283
            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

          arraycopy-------From JDK6.0

          public static void arraycopy(Object src,
          int srcPos,
          Object dest,
          int destPos,
          int length)
          從指定源數組中復制一個數組,復制從指定的位置開始,到目標數組的指定位置結束。從 src 引用的源數組到 dest 引用的目標數組,數組組件的一個子序列被復制下來。被復制的組件的編號等于 length 參數。源數組中位置在 srcPossrcPos+length-1 之間的組件被分別復制到目標數組中的 destPosdestPos+length-1 位置。

          如果參數 srcdest 引用相同的數組對象,則復制的執行過程就好像首先將 srcPossrcPos+length-1 位置的組件復制到一個帶有 length 組件的臨時數組,然后再將此臨時數組的內容復制到目標數組的 destPosdestPos+length-1 位置一樣。

          If 如果 destnull,則拋出 NullPointerException 異常。

          如果 srcnull, 則拋出 NullPointerException 異常,并且不會修改目標數組。

          否則,只要下列任何情況為真,則拋出 ArrayStoreException 異常并且不會修改目標數組:

          • src 參數指的是非數組對象。
          • dest 參數指的是非數組對象。
          • src 參數和 dest 參數指的是那些其組件類型為不同基本類型的數組。
          • src 參數指的是具有基本組件類型的數組且 dest 參數指的是具有引用組件類型的數組。
          • src 參數指的是具有引用組件類型的數組且 dest 參數指的是具有基本組件類型的數組。

          否則,只要下列任何情況為真,則拋出 IndexOutOfBoundsException 異常,并且不會修改目標數組:

          • srcPos 參數為負。
          • destPos 參數為負。
          • length 參數為負。
          • srcPos+length 大于 src.length,即源數組的長度。
          • destPos+length 大于 dest.length,即目標數組的長度。

          否則,如果源數組中 srcPossrcPos+length-1 位置上的實際組件通過分配轉換并不能轉換成目標數組的組件類型,則拋出 ArrayStoreException 異常。在這種情況下,將 k 設置為比長度小的最小非負整數,這樣就無法將 src[srcPos+k] 轉換為目標數組的組件類型;當拋出異常時,從 srcPossrcPos+k-1 位置上的源數組組件已經被復制到目標數組中的 destPosdestPos+k-1 位置,而目標數組中的其他位置不會被修改。(因為已經詳細說明過的那些限制,只能將此段落有效地應用于兩個數組都有引用類型的組件類型的情況。)

           

          參數:
          src - 源數組。
          srcPos - 源數組中的起始位置。
          dest - 目標數組。
          destPos - 目標數據中的起始位置。
          length - 要復制的數組元素的數量。
          拋出:
          IndexOutOfBoundsException - 如果復制會導致對數組范圍以外的數據的訪問。
          ArrayStoreException - 如果因為類型不匹配而使得無法將 src 數組中的元素存儲到 dest 數組中。
          NullPointerException - 如果 srcdestnull

          package com.Gavin.tools;

          public class CopyArray {

              
          public static void main(String[] args) {
                  
          int elements[] = 123456 };
                  
          int hold[] = 10987654321 };
                  
                  
          int result[] = new int[16];
                  
                  
          //數組累加
                  System.arraycopy(elements, 0, result, 0, elements.length);
                  System.arraycopy(hold, 
          0, result, elements.length, hold.length);        
                  
          for (int i = 0; i < result.length; i++)
                      System.out.println(
          "result[" + i + "]=" + result[i]);
                  
                  
          //自復制
                  System.arraycopy(elements, 0, elements, 11);
                  
          for (int i = 0; i < elements.length; i++)
                      System.out.println(
          "elements[" + i + "]=" + elements[i]);

                  
          //覆蓋累加
                  System.arraycopy(elements, 0, hold, 0, elements.length);        
                  
          for (int i = 0; i < hold.length; i++)
                      System.out.println(
          "hold[" + i + "]=" + hold[i]);
              }

          }

          主站蜘蛛池模板: 论坛| 新宾| 年辖:市辖区| 乌拉特前旗| 景泰县| 益阳市| 贵溪市| 泾阳县| 拜泉县| 若尔盖县| 红原县| 灵石县| 临朐县| 黔西县| 页游| 金山区| 公主岭市| 香河县| 嘉善县| 安仁县| 彭阳县| 扎赉特旗| 苏尼特右旗| 成都市| 永平县| 江城| 南川市| 福泉市| 安溪县| 溧水县| 隆林| 旺苍县| 廊坊市| 西昌市| 阳东县| 北辰区| 山东| 闸北区| 蒲城县| 平泉县| 咸丰县|