为了在类中存储字节数组,我只是复制数组还是只传递引用?
E.g。
class MyClass {
public MyClass(int size, Byte buf[]) {
this.size = size;
this.buffer = buf;
}
private int size;
private Byte buffer[];
}
,或者
class MyClass {
public MyClass(int size, Byte buf[]) {
this.size = size;
this.buffer = buf;
}
private int size;
private Byte buffer[] = new Byte[size];
}
,或者
class MyClass {
public MyClass(int size, Byte buf[]) {
this.size = size;
this.buffer = copyOf(buf, 5);
}
private int size;
private Byte buffer[];
}
我很困惑我是否需要真正复制数组或只是存储引用?
答案 0 :(得分:2)
如果不复制数组,那么对源数组所做的任何更改都将影响类中的新数组。这可能不是你想要的。
另外:您应该使用byte[]
,而不是Byte[]
。 (Byte
是byte
周围的包装器对象,Byte
个对象数组使用的内存比byte
基元中的一个更多。
答案 1 :(得分:2)
你需要决定你的合同是什么。
所以你需要回答这些问题:
答案 2 :(得分:0)
如果传递引用,则只要原始数组发生更改,阵列就会发生变化。 如果您只想要类中的值,则应选择第二种方法。因为这样两个数组是“分开的”。