例如给出以下方法:
public double[] getCoord(){
return coord;
}
public double getCoord(int variable){
return coord[variable];
}
打电话会更好吗
object.getCoord()[1]
或者
object.getCoord(1)
为什么?
例如给出以下方法:
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;
并在背后修改对象的内部结构。这绝不是一件好事:即使是非恶意用户也可能会做一些你从未想过的事情,只是犯了错误。
就性能而言,这并不重要。第一个方法返回对数组的引用,而不是副本。
也就是说,第二种方法保护数组不被类外修改。
[]
不,当您使用下标运算符 ( )时,Java 不会读取整个数组。关于首先使用访问器方法获取数组,然后对其进行索引而不是调用执行相同操作的方法会更好,它可能可以忽略不计。您仍然会产生调用函数并以任何一种方式返回结果的开销(请注意)。
我猜测#2 会稍微慢一些,因为在调用 getCoord(int) 之前必须将参数压入堆栈。虽然不多。
两者都不必读取整个数组。
两者都比直接数组访问慢,例如 coord[1]。