WVr*_*ock -4 java int optimization compare object
在JAVA中,我给我的对象提供了id号(int).我想比较给定的对象是否是预期的对象.
我应该使用哪个?哪个更快?
if(civ!=this)
Run Code Online (Sandbox Code Playgroud)
要么
if(civ.id!=id)
Run Code Online (Sandbox Code Playgroud)
编辑:
额外的信息:
Class Civ {
int id;
public Civ(int i){
id = i;
}
public boolean checkIfOther(Civ civ){
Run Code Online (Sandbox Code Playgroud)
这个:
return (civ.id !=id);
Run Code Online (Sandbox Code Playgroud)
或这个:
return(civ !=this);
Run Code Online (Sandbox Code Playgroud)
-
}
}
Run Code Online (Sandbox Code Playgroud)
civ != this是(略几乎可以肯定不知不觉)的速度比civ.id != id.但是,请注意,这两个是只有同civ是coreferent来this.看这个例子:
String a = new String("hello")
String b = a;
a == b // true
String c = new String("hello")
a == c // false!
Run Code Online (Sandbox Code Playgroud)
如果你是,例如,装载civ来自数据库,或从用户输入构建它,或以任何其他方式从直接分配创建它放在一边this(反之亦然),第一种方法会失败,因为他们将是两个不同的-即使可能是平等的 - 对象.如果不确定,请使用id以确保安全.