我不确定初始化字节数组时数字的重要性:例如。 byte[] t = new byte[2]
.
我在网上看到,数组的大小是固定的,所以不管怎样,数组的长度 t
应该是2对吧?
那么在这个例子中:
byte[] t = new byte[0];
t = "hello".getBytes(StandardCharsets.ISO_8859_1);
System.out.println(t.length);
输出是5?好像 t
只是被所有的元素填满而不在乎大小。
我需要这样的东西,我重复地向字节数组中添加值,而不知道数组最终会有多大,我能不能继续添加类似的东西 t
在这里?
5条答案
按热度按时间2izufjch1#
如果在更改t之前尝试打印t的长度,则得到0,在覆盖t变量数据之后,新长度为5
6xfqseft2#
在第二行中,您没有替换数组的内容,而是替换了数组本身,这意味着
t
现在指向由“hello”字符串组成的长度为5的数组。wqsoz72f3#
java中的数组大小固定,不能追加。
为此,通常使用arraylist,它是处理动态调整大小的数组的 Package 器。
但是,对于字节,由于自动装箱,这并不理想,在列表中存储基本字节需要额外的内存和性能。
bytearrayoutputstream也是一个围绕数组的 Package 器,用于处理大小调整,但这次是专门针对字节的。使用方法如下:
注意:这涉及附加
bytes
因为问题确实如此。在本例中,首先组合字符串,然后一次性获取字节可能更容易。可以使用
StringBuilder
或是和+
以及+=
操作员。n9vozmp44#
主要原因是当你使用
您创建了具有新长度的全新数组,因此此代码类似
mu0hgdu05#
在那个例子中
t
使用零长度数组进行初始化是无用的,当t
指定的返回值"hello".getBytes(StandardCharsets.ISO_8859_1);
.它真的应该写没有扔掉的价值,因为