Android筆記:java 中的數組

來源:互聯網
上載者:User

標籤:android   des   style   blog   class   code   

在與嵌入式裝置通訊的過程中使用的socket通訊 擷取的位元組流,通常轉換為位元組數組,需要根據協議將位元組數組拆分。對於有規律的重複拆分可以使用,由於java中不能像c中直接進行記憶體操作例如使用struct 記憶體拷貝可以直接實現,這裡考慮的是借用數組拷貝的方式來實現。

java數組複製參考 引自百度空間 同時參考 數組拷貝之java.lang.System.arraycopy和java.util.Arrays.copyOf方法

java數組複製的4種方式,java數組拷貝問題JAVA數組的複製是引用傳遞,而並不是其他語言的值傳遞。這裡介紹java數組複製的4種方式極其問題:第一種方式利用for迴圈:int[] a={1,2,4,6};int length=a.length;int[] b=new int[length];for (int i = 0; i < length; i++) {b[i]=a[i];}第二種方式直接賦值:int[] array1={1,2,4,6};int[] array2=a;這裡把array1數組的值複製給array2,如果你這樣去運行,就會發現此時兩個數組的值是一樣的。把array2=array1;替換為System.arraycopy(array1,0, array2, 0, array1.length);就能把array1中的數值複製給array2,而兩者並不指向同樣的地址。 第三種方式:利用Arrays內建的copyof int copy[] = Arrays.copyOf(a, a.length); 第四種方式:System.arraycopy
 這裡再介紹一下System.arraycopy這個函數,從JAVA API中找了一段。大家看一下。 public static voidarraycopy(Object src, int srcPos, Object dest, int destPos, int length)從指定源數組中複製一個數組,複製從指定的位置開始,到目標數組的指定位置結束。從src引用的源數組到dest引用的目標數組,數組組件的一個子序列被複製下來。被複製的組件的編號等於length參數。源數組中位置在srcPos到srcPos+length-1之間的組件被分別複製到目標數組中的destPos到destPos+length-1位置。 如果參數src和dest引用相同的數組對象,則複製的執行過程就好像首先將srcPos到srcPos+length-1位置 的組件複製到一個帶有length組件的臨時數組,然後再將此臨時數組的內容複寫到目標數組的destPos到 destPos+length-1位置一樣。 If 如果dest為null,則拋出NullPointerException異常。 如果src為null, 則拋出NullPointerException異常,並且不會修改目標數組。 否則,只要下列任何情況為真,則拋出ArrayStoreException異常並且不會修改目標數組: src參數指的是非數組對象。 dest參數指的是非數組對象。 src參數和dest參數指的是那些其組件類型為不同基本類型的數組。 src參數指的是具有基本組件類型的數組且dest參數指的是具有引用組件類型的數組。 src參數指的是具有引用組件類型的數組且dest參數指的是具有基本組件類型的數組。 否則,只要下列任何情況為真,則拋出IndexOutOfBoundsException異常,並且不會修改目標數組: srcPos參數為負。 destPos參數為負。 length參數為負。 srcPos+length大於src.length,即源數組的長度。 destPos+length大於dest.length,即目標數組的長度。 否則,如果源數組中srcPos到srcPos+length-1位置上的實際組件通過分配轉換並不能轉換成目標數組的組 件類型,則拋出ArrayStoreException異常。在這種情況下,將k設定為比長度小的最小非負整數,這樣就 無法將src[srcPos+k]轉換為目標數組的組件類型;當拋出異常時,從srcPos到srcPos+k-1位置上的源數組 組件已經被複製到目標數組中的destPos到destPos+k-1位置,而目標數組中的其他位置不會被修改。(因 為已經詳細說明過的那些限制,只能將此段落有效地應用於兩個數組都有參考型別的組件類型的情況。) 參數:src- 源數組。 srcPos- 源數組中的起始位置。 dest- 目標數組。 destPos- 目標資料中的起始位置。 length- 要複製的數組元素的數量。 拋出:IndexOutOfBoundsException- 如果複製會導致對數組範圍以外的資料的訪問。 ArrayStoreException- 如果因為類型不符而使得無法將src數組中的元素儲存到dest數組中。 NullPointerException- 如果src或dest為null。

 

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.