2015-05-28 12 views
3

Почему if условно оценивает true в этой программе? Как 10 эквивалент 10.0?Равенство Оператор тонкие отличия

public class Test { 
    public static void main(String[] args) { 
     int i = 10; 
     double d = 10.0; 

     if (i == d) { 
      System.out.println("hi"); 
     } else { 
      System.out.println("bye"); 
     } 
    } 
} 
+0

'я == d' такое же, как' (дважды) я == d' или 'I - г == 0 ' –

ответ

11

Из-за binary numeric promotion правила, описанные в спецификации языка Java, раздел 5.6.2. Эти правила применяются к двоичным операциям на числах различного типа. В нем говорится, что:

Если один из операндов имеет тип double, другой преобразуется в двойное.

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