Автоматическое расширение (implicit widening) и явное сужение (explicit narrowing) - это два типа приведения типов в Java. Автоматическое расширение (implicit widening) происходит, когда значение одного типа данных автоматически приводится к другому типу данных без потери точности. Это происходит, когда мы присваиваем переменной значение меньшего размера, чем тип переменной, и компилятор автоматически преобразует тип. Например, при присваивании значения типа int переменной типа long, компилятор автоматически расширяет тип до long. Аналогично, если мы присваиваем значение типа float переменной типа double, тип переменной автоматически расширяется до double. Например: int i = 10;
long l = i; // автоматическое расширение int до long
float f = 3.14f;
double d = f; // автоматическое расширение float до double Явное сужение (explicit narrowing) происходит, когда значение одного типа данных приводится к другому типу данных с потерей точности. Это происходит, когда мы присваиваем значению