Почему переменная типа int требует приведения типа при присваивании?

уважаемые. Простой вопрос. Почему происходит так, что при присваивании переменной результата выражения, которое возвращает вещественное число, всё компилируется без приведения типа; просто отбрасывается дробная часть и всё. Однако, если мы попробуем присвоить переменной типа int вещественное число, то выдаст ошибку, вместо всё того же элементарного отбрасывания, и мы вынуждены писать (int).

public class Solution {
    public static void main(String[] args) {
        int x = 5 / 2; //2.5
        int y = 2.5; //Ошибка.
        int z = (int) 2.5;
    }
} 

Ответы (2 шт):

Автор решения: Igor
int x = 5 / 2; // ne 2.5, a 2

Справа происходит "целочисленное деление", так как оба операнда - целые.

Попробуйте:

int x = 5.0 / 2;
→ Ссылка
Автор решения: SurfaceStack
  • В первом случае это работает, потому что при делении целого числа в java остаток при делении отбрасывается (получится 2).

  • Во втором же случае мы явно присваиваем целому числу вещественное из-за этого приходится использовать приведение типов (опять же в переменной x получится 2).

→ Ссылка