我有一個問題,我只是不知道如何解決它。Java變量保存
我想創建一個類,其中2D int數組保存兩次。有一次,我保持這樣的狀態,還有一次我可以修改。
總之我的課是這樣的:
private static class Class {
private final int[][] firstForm;
private int[][] modify;
public Class(int[][] firstForm){
this.firstForm = firstForm;
this.modify = firstForm;
//I also already tried .clone() on both
}
public void setValue(int x, int y, int val){
if(firstForm[x][y]!=0){
System.out.println("ERROR!);
return;
}
modify[x][y]=val;
}
}
現在,當我使用功能的setValue修改變化的不僅是價值,而且firstForm之一。 我已經嘗試過this.modify = firstForm.clone();
,但結果是一樣的。有人可以幫助我,告訴我我做錯了什麼嗎?
firstForm和modify是對同一個二維數組的引用,當其中一個發生變化時也是如此。如果您使用克隆進行嘗試並且無法正常工作,則您沒有正確嘗試。順便說一句,firstForm只意味着你不能通過像setValue這樣的方法改變firstForm的值作爲引用而不是它的內容。 – DSquare
我不知道如何更正確地做到這一點:P 我剛剛將{this.modify = firstForm;}這一行更改爲{this.modify = firstForm.clone();}和{this.firstForm = firstForm; } to {this.firstForm = firstForm.clone();}並且結果保持不變 – Nexxurs