2017-04-13 120 views
0

我有一個對象來讀取數據:的Java:從對象的訪問對象

DataReader dataReader = new DataReader(); 

和對象爲:

Data data = new Data(); 

我可以像這樣讀取數據:

dataReader.read(data); 

或者我可以通過datadataReader構造函數並在dataReader對象內讀取它。

什麼更有效?

什麼是萬一閱讀()方法來實現這樣的好:

public void read(Data data) { 
     this.readString(data); 
     this.readString(data); 
    } 

和方法readString(Data data)

private void readString(Data data) { 
     data.nextLine(); 
    } 

含義,是它最好有一個本地數據對象和呼叫它的方法或將其作爲方法參數多次傳遞給java passes object by value not reference?什麼工作更快,消耗更少的內存?

+3

不要擔心效率,直到您看到您的程序執行速度不足以滿足您的需求。此時,對導致瓶頸的特定部分進行優化。試圖微觀優化你寫的所有內容只會浪費很多時間,可能會讓你的代碼難以閱讀。 – nhouser9

+1

Java不*按值傳遞對象。 Java根本不傳遞對象。它可以通過值將*引用*傳遞給對象。在性能方面,除非您處於瓶頸狀態,否則對運行時成本差異微乎其微的擔憂會超出代碼的可理解性。 –

+1

是否允許DataReader讀取多個Data對象?如果是的話,我會實現public void read(Data data){...}(1 to many relationship)。如果DataReader只使用一個Data對象,那麼通過構造函數傳遞它是有意義的(1對1關係)。 –

回答

1

我有點不確定你的問題的第二部分是什麼意思,但如果你是指我的想法,那麼這應該回答它。

在構造函數或方法中調用方法完全取決於用法。對於這種情況,你是否要重複讀取這些數據?如果是,那麼創建DataReader的一個實例將比爲每個讀取創建一個更有效,因此在一個實例上重複使用該方法會更有效。如果你只使用它一次,那麼你不希望在處理完內存後在內存中留下無用的對象實例,所以創建一個臨時實例並在構造函數中讀取會更有效。

但正如評論所說,這些事情對於優化很少關注,並且影響不大。理論上它很有趣,但實際上除非必須,否則不必擔心。