【发布时间】:2017-06-08 03:54:34
【问题描述】:
我正在开发一个程序,我试图减少分配的内存量,我以前用来连接字符串,但问题是我做了几百万次这个过程,我做的越多,花费的时间就越长分配这些字符串。相反,现在我正在尝试使用字节。我想做这样的事情:
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);
我只想获取第一个字节并将第二个字节放在它之后而不使用任何形式的字符串类,因为它需要更多的开销来连接字符串。有没有办法用最少的操作做到这一点?
【问题讨论】:
-
看看这个question
-
你想将字节连接成什么?您的代码显示您试图将它们连接成一个
byte,这没有多大意义。两个字节可以构成byte[2]、short或char。 -
您必须创建一个字节数组(或者,正如其他人所提到的,将最多 8 个字节一起打包成一个更大的原语,如 short、int 或 long)。但是,当您的字符串连接花费的时间太长时——您使用的是 StringBuilder 还是
+? -
您的 + 可能是 O(n^2) 操作。您应该使用 StringBuilder 而不是直接连接。我没有方便的链接,但我确信在这个网站上有一个关于这个的问题。搜索 StringBuilder vs concatenation,或类似的。
-
@ProgrammingCuber 自己看一下 API:
StringBuilder
标签: java byte concatenation