2016-10-28 3 views
-3

Так что я в настоящее время пытаюсь понять, как работает CompareTo, поэтому я читаю некоторые интернет-проблемы и один из них являетсямне нужна помощь, чтобы понять, как работает CompareTo

Предположим, мы имеем следующие перечисляемые типы: enum Номера {BH310, BH311, BH312F}. Будет ли результат теста равным true или false? Объяснить, почему.

Номера. BH310. compareTo (Номера BH311)> 0

Не правда ли, потому что мы предполагаем, что это правда? как java делает это правдой, не называя это правдой?

+0

Пожалуйста, постарайтесь объяснить, что вы имеете в виду. –

+3

'это не правда, потому что мы предполагаем, что это правда? Является ли эта философия? –

+0

@ScaryWombat Я имею в виду, не java автоматически устанавливает его в true, когда вы его не называете? –

ответ

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 как результат.

Смежные вопросы