【发布时间】:2014-08-22 16:50:41
【问题描述】:
enum Drill{
ATTENTION("Attention!"), AT_EASE("At Ease");
private String str;
private Drill(String str){
this.str = str;
}
public String toString(){
return str;
}
}
public class EnumExample {
public static void main(String[] args) {
Drill d1= Drill.valueOf("ATTENTION");
Drill d2= Drill.valueOf("ATTENTION");
**System.out.println(d1.equals(d2));//TRUE
System.out.println(d1==d2);//TRUE**
System.out.println(Drill.ATTENTION.equals(Drill.valueOf("ATTENTION")));
System.out.println(Drill.ATTENTION.equals(Drill.AT_EASE));//FALSE
System.out.println(Drill.ATTENTION==Drill.valueOf("ATTENTION"));//TRUE
System.out.println(Drill.ATTENTION==Drill.AT_EASE);//FALSE
}
}
使用 == 和 equals() 时的枚举行为似乎相同。据我所知,== 只是检查参考。因此 d1 == d2 应该是 FALSE。谁能解释这种行为为什么是真的?
【问题讨论】: