簡體   English   中英

在Java中有效串聯2個字節

[英]Concatenating 2 bytes in Java efficiently

我正在一個程序中嘗試減少分配的內存量,我以前使用它來連接字符串,但是問題是我執行了此過程數百萬次,並且執行的次數越多,分配這些字符串所花費的時間就越長。 相反,現在我正在嘗試使用字節。 我想做這樣的事情:

byte[] arr = new byte[5];
byte cat = arr[0] + arr[1]  //this addition would give me an error obviously. It's for demostration purposes

System.out.println(cat);

我只想獲取第一個字節,然后將第二個字節放在其后,而不使用任何形式的String Class,因為這樣串聯字符串需要更多的開銷。 有什么辦法可以用最少的操作做到這一點?

使用System.arraycopy()創建一個新的輸出字節數組,該數組的大小等於要在新字節數組中串聯的所有字節的總和。

由於System.arraycopy()是本機調用,因此肯定比String串聯更快。

如果要將兩個或多個字節“連接”成一個新的字節數組,只需使用數組初始化程序語法:

byte a = 1;
byte b = 42;
byte c = 99;

byte[] cat = {a,b,c};

System.out.println(Arrays.toString(cat)); // prints: [1, 42, 99]

但是,您的示例更類似於substring()調用,為此,您應該使用Arrays.copyOfRange() ,例如

byte[] arr = {5,4,3,2,1};

byte[] cat = Arrays.copyOfRange(arr, 0, 2);

System.out.println(Arrays.toString(cat)); // prints: [5, 4]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM