例如給出了以下方法:從對象中的數組中獲取元素時,Java是否必須讀取整個數組?
public double[] getCoord(){
return coord;
}
public double getCoord(int variable){
return coord[variable];
}
它會更好調用
object.getCoord()[1]
或
object.getCoord(1)
,爲什麼?
例如給出了以下方法:從對象中的數組中獲取元素時,Java是否必須讀取整個數組?
public double[] getCoord(){
return coord;
}
public double getCoord(int variable){
return coord[variable];
}
它會更好調用
object.getCoord()[1]
或
object.getCoord(1)
,爲什麼?
雖然沒有性能差異,但第二種方法提供了非常優越的API,因爲Java陣列總是可變的。第一個API可以讓你的用戶編寫
object.getCoord()[1] = 12.345;
並修改你背後的對象的內部。這絕不是一件好事:即使是非惡意用戶也可以做你從未想過的事情,只是錯誤。
+1用於指出可變性問題。 – vijay
不,Java在使用下標運算符([]
)時不讀取整個數組。關於使用訪問器方法首先獲取數組,最好使用索引,然後調用一個方法來執行相同的操作,但這可能可以忽略不計。你仍然承擔調用一個函數並返回結果的開銷(最簡單的你)。
就性能而言,沒關係。第一個方法返回對數組的引用,而不是副本。
也就是說,第二種方法可以防止數組在外部被修改。
我會猜測#2稍微慢一些,因爲在調用getCoord(int)之前必須將參數壓入堆棧。雖然沒有太多。
既不必讀取整個數組。
兩者都比直接數組訪問慢,例如coord [1]。
您的第一次調用應該是大概讀取object.getCoord()[1]而不是object.getCoord [1]。 – jarmod