Я написал программу.Неявное сужение при суммировании констант против явного сужения при суммировании переменных
class First
{
public static void main(String[] args)
{
int c = 5;
byte b = c+6;
System.out.println(b);
}
}
И мой выход Javac является:
error: incompatible types: possible lossy conversion from int to byte
byte b = c+6;
^
1 error
Но если изменить программу, как:
class First
{
public static void main(String[] args)
{
byte b = 5+6;
System.out.println(b);
}
}
Он выполняет отлично, выход:
11
Я знаю, что перед операцией оба операнда становятся сходящимися ted in integer. Тогда оператор + приводит к целому числу. Но если переменная c была целым числом, то по умолчанию константа 5 также является целым числом. Почему javac не приводит к ошибке во втором случае?
Прошу вас, если я концептуально ошибаюсь.