所以我目前正在尝试理解compareTo的工作原理, 所以我正在阅读一些在线问题,其中一个是
假设我们有以下枚举类型:enum Rooms {BH310,BH311,BH312F}。会的吗? 以下测试评估为真还是假?解释原因。
房间。 BH310。 compareTo(Rooms.BH311)> 0
不是真的,因为我们认为它是真的吗?像java一样,如果不将其称为true,那么它是真的吗?
答案 0 :(得分:1)
openjdk 9dev/jdk/src/java.desktop/share/classes/javax/print/attribute/EnumSyntax.java
中的评论:
在引擎盖下,枚举值只是一个整数,枚举类中每个枚举值的不同整数。
在您的示例中,
enum Rooms{BH310, BH311, BH312F}
相当于:
Integer BH310=0;
Integer BH311=1;
Integer BH312F=2;
这是因为每个枚举值由整数表示。如果更改了枚举值的顺序,则compareTo操作将以不同方式返回。在下面的表示中,我们将1
打印到屏幕上:
public enum Rooms {
BH311, BH310, BH312F;
}
public static void main(String[] args) {
System.out.println(Rooms.BH310.compareTo(Rooms.BH311));
}
但是,在下面列出的代码中,我们会在屏幕上显示-1
。
public enum Rooms {
BH310, BH311, BH312F;
}
public static void main(String[] args) {
System.out.println(Rooms.BH310.compareTo(Rooms.BH311));
}
简单地说,当0.compareTo(1)
执行时,我们得到-1
,结果1.compareTo(0)
执行后,我们得到1
。