在Java中有效连接2个字节

时间:2017-06-08 03:54:35

标签: java byte concatenation

我正在开发一个程序,我正在尝试减少分配的内存量,我以前用来连接字符串,但问题是我执行了这个过程数百万次,而且我做的越多,所用的时间越长分配这些字符串。相反,现在我正在尝试使用字节。我想做这样的事情:

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,因为它需要更多的开销来连接字符串。有没有办法用最少的操作来做到这一点?

2 个答案:

答案 0 :(得分:0)

创建一个新的输出字节数组,其大小等于使用System.arraycopy()

在新字节数组中连接的所有字节的总和

由于System.arraycopy()是本机调用,它肯定比字符串连接更快。

答案 1 :(得分:0)

如果要将两个或多个字节“连接”到一个新的字节数组中,只需使用array initializer语法:

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]