更好的解决方案?
public String toString(byte[] array) {
if (array == null)
return "null";
StringBuilder sb = new StringBuilder(256).append('[');
for (int j = 0; j < array.length; ++j) {
sb.append(array[j]);
if (j != array.length - 1)
sb.append(", ");
}
return sb.append(']').toString();
}
更好的解决方案?如果可能的话,可以使用更快速的解决方案来执行此方法
答案 0 :(得分:4)
Arrays.toString()
返回指定数组的String表示。也许这应该足够了:
String s1 = Arrays.toString(byte);
答案 1 :(得分:0)
以下一行:
sb.append(array[j]);
有点贵,因为它涉及将int
转换为字符表示,同时跟踪工作缓冲区等。
如果你能忍受这样的结果:
[-123, 123, 002, 000,-022, 127]
而不是
[-123, 123, 2, 0, -22, 127]
然后,下面的方法在我的机器上快2到3倍:
public String toString(byte[] array) {
final char DIGITS[] = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9'};
if (array == null) {
return "null";
}
char[] res = new char[(array.length * 5) + 1];
int abs;
int pos = 0;
res[pos++] = '[';
for (int i = 0; i < array.length; i++) {
if (array[i] < 0) {
abs = - array[i];
res[pos++] = '-';
} else {
abs = array[i];
res[pos++] = ' ';
}
res[pos++] = (abs >= 100 ? '1' : '0');
int rest = (abs % 100);
res[pos++] = DIGITS[rest / 10];
res[pos++] = DIGITS[rest % 10];
res[pos++] = ',';
}
res[res.length - 1] = ']';
return new String(res);
}