【发布时间】:2018-10-15 05:43:49
【问题描述】:
在 JAVA 中,我将 id numbers(int) 分配给我的对象。我想比较给定的对象是否是预期的对象。
我应该使用哪个?哪个更快?
if(civ!=this)
或
if(civ.id!=id)
编辑:
额外信息:
Class Civ {
int id;
public Civ(int i){
id = i;
}
public boolean checkIfOther(Civ civ){
这个:
return (civ.id !=id);
或者这个:
return(civ !=this);
-
}
}
【问题讨论】:
-
快不快,它们是两种不同的比较。
-
为了比较对象,您不能只使用 == 比较它们。用 == 比较对象只比较两个对象在内存中是否相同。您需要覆盖 equals 方法并在该方法中提供您自己的逻辑。
-
为什么这会得到如此多的反对?
-
@WVrock Premature micro optimization。性能差异是如此之小,你永远不会注意到它。以最有意义的方式编写比较。 --- 另外请注意,除非您保证内存中没有两个对象可以具有相同的
id值,否则比较是不一样的。 -
错过的分支可能会慢 10-100 倍,因此进行比较的时间几乎无关紧要。
标签: java object optimization int compare