2017-04-13 113 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的一个实例将比为每个读取创建一个更有效,因此在一个实例上重复使用该方法会更有效。如果你只使用它一次,那么你不希望在处理完内存后在内存中留下无用的对象实例,所以创建一个临时实例并在构造函数中读取会更有效。

但正如评论所说,这些事情对于优化很少关注,并且影响不大。理论上它很有趣,但实际上除非必须,否则不必担心。