1

例如给出以下方法:

    public double[] getCoord(){
        return coord;
}

    public double getCoord(int variable){
        return coord[variable];
}

打电话会更好吗

object.getCoord()[1]

或者

object.getCoord(1)

为什么?

4

4 回答 4

4

虽然没有性能差异,但第二种方法提供了一个更优越的 API,因为 Java 数组总是可变的。第一个 API 让您的用户编写

object.getCoord()[1] = 12.345;

并在背后修改对象的内部结构。这绝不是一件好事:即使是非恶意用户也可能会做一些你从未想过的事情,只是犯了错误。

于 2013-04-19T01:18:16.440 回答
1

就性能而言,这并不重要。第一个方法返回对数组的引用,而不是副本。

也就是说,第二种方法保护数组不被类外修改。

于 2013-04-19T01:18:17.943 回答
0

[]不,当您使用下标运算符 ( )时,Java 不会读取整个数组。关于首先使用访问器方法获取数组,然后对其进行索引而不是调用执行相同操作的方法会更好,它可能可以忽略不计。您仍然会产生调用函数并以任何一种方式返回结果的开销(请注意)。

于 2013-04-19T01:18:16.487 回答
0

我猜测#2 会稍微慢一些,因为在调用 getCoord(int) 之前必须将参数压入堆栈。虽然不多。

两者都不必读取整个数组。

两者都比直接数组访问慢,例如 coord[1]。

于 2013-04-19T01:21:00.160 回答