例如,给出以下方法:
public double[] getCoord(){
return coord;
}
public double getCoord(int variable){
return coord[variable];
}
打电话
会不会更好object.getCoord()[1]
或
object.getCoord(1)
为什么?
答案 0 :(得分:4)
虽然没有性能差异,但第二种方法提供了更优越的API,因为Java数组总是可变。第一个API允许您的用户编写
object.getCoord()[1] = 12.345;
并修改背后的物体内部。这绝不是一件好事:即使是非恶意用户也可以做错你想做的事情。
答案 1 :(得分:1)
在性能方面,没关系。第一种方法返回对数组的引用,而不是副本。
也就是说,第二种方法可以保护数组不被类修改。
答案 2 :(得分:0)
不,当您使用下标运算符([]
)时,Java不会读取整个数组。关于使用访问器方法首先获取数组,然后索引到它而不是调用执行相同操作的方法会更好,它可能是微不足道的。您仍然会产生调用函数并以任何方式返回结果的开销(最小的想法)。
答案 3 :(得分:0)
我猜测#2稍微慢了,因为在调用getCoord(int)之前必须将参数压入堆栈。虽然不多。
两者都不必阅读整个阵列。
两者都比直接数组访问慢,例如coord [1]。