我已經失去了一段時間的編程接觸,現在正試圖回到它。這種方式能夠正確分配字節數組嗎?
我偶然發現了一個演示代碼,通過循環從陣列複製到陣列。我可否知道下面的作業是否會造成錯誤?如果會的話,是否有比循環更清潔的方法?謝謝!
private byte[] key;
public void setKey (byte[] newKey){
this.key = newKey;
}
我已經失去了一段時間的編程接觸,現在正試圖回到它。這種方式能夠正確分配字節數組嗎?
我偶然發現了一個演示代碼,通過循環從陣列複製到陣列。我可否知道下面的作業是否會造成錯誤?如果會的話,是否有比循環更清潔的方法?謝謝!
private byte[] key;
public void setKey (byte[] newKey){
this.key = newKey;
}
使用下面的方法
public void setKey (byte[] newKey){
this.key = Arrays.copyOf(newKey, newKey.length);
}
指定數組您也可以看看this問題更好地瞭解
不知道OP的代碼應該用於什麼,這可能會導致問題,而不是解決問題。 (另外,'copyOf()'的第二個參數應該是'newKey.length',而不是'key.length'。) –
我只是向他解釋如何完成這項任務。更新我的答案,謝謝。 –
但這可能不合適。將引用存儲到特定的數組對象可能很重要,而不是其中的副本。正如我所說,在不瞭解背景的情況下,不可能說哪種方法是正確的。 –
'key'將堅持'newKey'一個參考,所以你做任何改變到'key'也會在'newKey'中改變。 – Logan
我同意@Logan - 這段代碼使得'key'成爲了作爲參數傳遞給'setKey()'的相同數組對象的引用。 (它不會複製數組本身。)這個「是否會創建一個錯誤」取決於對數組的引用是否保存在代碼中的任何其他位置,如果是這樣,那麼將如何使用多個引用。 –
它會導致錯誤嗎?也許?我們需要上下文。這不會*複製數組,它只是創建另一個對同一內存空間的引用。 –