Будет ли преобразование типа double в int считаться неявным преобразованием типа?

#java #implicit-conversion

#java #неявное преобразование

Вопрос:

Допустим, я преобразовал double x в int, что может быть выполнено автоматически путем усечения. Будет ли это по-прежнему считаться неявным преобразованием? Является ли неявное преобразование невозможным перевести фактическое значение из одного типа в другой тип без потери точности этого значения. В этом случае я бы не потерял десятичную часть до значения x? Я не смог найти ничего конкретного в документах java по этому поводу, поэтому я решил спросить здесь:

 double x = 420.69;
int y = x;
 

Комментарии:

1. Это не неявное преобразование, это ошибка. int y = x; не будет компилироваться.

2. В документации это описано в пункте 5.1.3 Сужение примитивного преобразования . Такое преобразование возможно благодаря явному приведению более широкого типа к более узкому .

3. Неявное преобразование противоположно явному преобразованию. Явное преобразование использует правила приведения, поэтому int y = (int)x; будет явным. В неявном преобразовании отсутствует приведение, что означает, что программист мог допустить ошибку.

Ответ №1:

Это не неявное преобразование, и это приведет к ошибке компилятора.

 double x = 420.69;
int y = x;
 

Поскольку double — это больший тип данных, чем int, его необходимо уменьшить.

 double x = 420.69;
int y = (int)x;
 

Однако все цифры после десятичной дроби будут потеряны.