Как постоянная времени компиляции будет работать внутри java - PullRequest
1 голос
/ 28 февраля 2020

Мой вопрос заключается в том, как внутренняя константа времени компиляции работает, поэтому мы не получили ошибку в операторе Below.

final int a = 10;
byte b = a;

И почему я получаю ошибку в этом операторе.

int a = 10;
byte b = a;

Ответы [ 2 ]

2 голосов
/ 28 февраля 2020

Это потому, что не все целые числа помещаются в байт.

В вашем первом примере значение a известно и не может измениться. Компилятор знает, что он уместится в байт.

Во втором примере, поскольку a не является окончательным, возможно, его можно было изменить (хотя и не в вашем примере). Компилятор Java не настолько умен, чтобы заметить, что ничего не изменило его, поэтому больше не уверен, что он уместится в байт.

В качестве примера рассмотрим следующее:

    final int a = 10000;
    byte b = a;

Поскольку значение a теперь слишком велико, чтобы поместиться в int, оно больше не компилируется.

0 голосов
/ 28 февраля 2020

В приведенном ниже случае, когда значение int не равно final, вам необходимо привести значение int к byte при назначении целочисленного значения byte в java.

int a=11;
byte b= (byte) a;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...