那么说默认equals(Object obj)
public boolean equals(Object obj){
this == obj;
}
或:
int a = 1;
int b = 2;
a == b;
可能是另一种具有其他价值的类型,我只是找不到每种价格的文件。
添加原因:
我正在阅读this question我想,如果有一个优化来比较对象内部的值(如int)并比较它们而不是引用
答案 0 :(得分:1)
写了一个小班(随意在你选择的编辑器中运行)..
public class HelloWorld {
public static void main(String []args) {
HelloWorld app = new HelloWorld();
int n = 100000;
long startTime = System.nanoTime();
app.doEqualsNull(n);
long endTime = System.nanoTime();
System.out.println("doEqualsNull (ns): " + (endTime - startTime)) ;
startTime = System.nanoTime();
app.doEqualsThis(n);
endTime = System.nanoTime();
System.out.println("doEqualsThis (ns): " + (endTime - startTime)) ;
startTime = System.nanoTime();
app.doEqualsSameInt(n);
endTime = System.nanoTime();
System.out.println("doEqualsSameInt (ns): " + (endTime - startTime)) ;
startTime = System.nanoTime();
app.doEqualsDifferentInt(n);
endTime = System.nanoTime();
System.out.println("doEqualsDifferentInt (ns): " + (endTime - startTime)) ;
}
public void doEqualsNull(int n) {
for (int i = 0 ; i < n ; i++) {
this.equals(null);
}
}
public void doEqualsThis(int n) {
for (int i = 0 ; i < n ; i++) {
this.equals(this);
}
}
public boolean equals(Object obj){
return this == obj;
}
public void doEqualsSameInt(int n) {
for (int i = 0 ; i < n ; i++) {
this.equalsInt(5);
}
}
public void doEqualsDifferentInt(int n) {
for (int i = 0 ; i < n ; i++) {
this.equalsInt(50);
}
}
public boolean equalsInt(int other){
return 5 == other;
}
}
输出:
doEqualsNull (ns): 3660106
doEqualsThis (ns): 3237291
doEqualsSameInt (ns): 2887368
doEqualsDifferentInt (ns): 2992786
整数平等似乎需要稍微缩短的时间(这确实是一个非常小的差异) - 但是,我再次猜测一些分支预测确实对我的超级科学计算产生了影响。 :)