我正在开发一个程序,我正在尝试减少分配的内存量,我以前用来连接字符串,但问题是我执行了这个过程数百万次,而且我做的越多,所用的时间越长分配这些字符串。相反,现在我正在尝试使用字节。我想做这样的事情:
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,因为它需要更多的开销来连接字符串。有没有办法用最少的操作来做到这一点?
答案 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]