public class Program {
IntegSet i1, i2, i3, i4;
i1 = new IntegSet();
i2 = new IntegSet(1,2,5);
i3 = new IntegSet();
i4 = new IntegSet(i2);
}
我的計劃的目的是使整臺。Java的拷貝構造函數
public class IntegSet{
private final int MAXALLOWEDSETVALUE=2000;
private boolean [] data = new boolean[MAXALLOWEDSETVALUE+1];
我有這樣的第一個功能,我認爲這是好的。
public IntegSet(int... elts) {
int index = 0;
for(int iteration = 0; iteration < elts.length; iteration++) {
index = elts[iteration];
data[index] = true;
}
}
但對於此功能
public IntegSet(IntegSet source){
this.data = source.data;
}
這是一個拷貝構造函數?我對這是如何工作有點困惑。而從這個函數的區別:
public void setTo(IntegSet source){}
在那裏我應該用這個稱呼它:
i3.setTo(i3.subtract(i1))
謝謝
如果'data'可以修改,你需要'Arrays.copyOf(數據,data.length)'取而代之的是'data'只是一個參考,如果原來的'IntSet'改變了,那麼新的也是。另外,我認爲你的原始構造函數是錯誤的。如果我將'{1,3,5}'傳遞給你的構造函數,你的'IntSet'會設置ints {0,1,2},因爲你從'0'循環到'elts.length'。 – Moira
或簡單地'this.data = source.data.clone()'。 – Andreas
好吧,我編輯了我原來的構造函數。你也可以解釋一下我應該使用Arrays.copyof(data,data.length)還是clone()?我知道我需要有兩個函數setTo(IntegSet源)和複製構造函數。複製構造函數是否正確?如果是這樣,複製構造函數和setTo有什麼區別?謝謝 – Coder117