两者都可用于创建字节列表。但它们之间有什么区别?
byte[] buffer;
List<Byte> buffer;
答案 0 :(得分:9)
两者都可用于创建字节数组
不,第一个创建一个字节数组。第二个定义了一个列表字节,根据您使用的List
实现,它可能会也可能不会被数组支持。
数组是固定大小并预先分配的;如果你需要增长数组,你需要创建一个 new ,更大的数组,复制内容,然后添加新内容。
另一方面,列表通常是动态的,随着向它们添加内容而增长,随着从中删除内容而缩小等。一个列表实现ArrayList
通过维护后备阵列来实现这一点,通常会有一些松弛,然后在添加时根据需要进行重新分配和复制。
另请注意,List
实际上不能包含原始byte
值;相反,它将包含Byte
个对象(通过一个称为自动装箱的过程)。
答案 1 :(得分:5)
byte[] buffer
是一个预先确定的byte
数组,没有任何方法可以在Byte
上和[]
中进行
List<Byte> buffer
是Byte对象的List对象,它也有Byte
答案 2 :(得分:4)
byte[]
数组具有固定大小,而列表则没有。byte[]
数组包含原始 byte
值,而列表包含盒装值,因此列表需要更多内存更多信息: