我需要帮助才能理解compareTo的工作原理

时间:2016-10-28 02:31:35

标签: java bluej compareto

所以我目前正在尝试理解compareTo的工作原理, 所以我正在阅读一些在线问题,其中一个是

假设我们有以下枚举类型:enum Rooms {BH310,BH311,BH312F}。会的吗? 以下测试评估为真还是假?解释原因。

房间。 BH310。 compareTo(Rooms.BH311)> 0

不是真的,因为我们认为它是真的吗?像java一样,如果不将其称为true,那么它是真的吗?

1 个答案:

答案 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