У меня есть следующий фрагмент кода.
public static void main(String[] args) {
short a = 4;
short b = 5;
short c = 5 + 4;
short d = a;
short e = a + b; // does not compile (expression treated as int)
short z = 32767;
short z_ = 32768; // does not compile (out of range)
test(a);
test(7); // does not compile (not applicable for arg int)
}
public static void test(short x) { }
Является ли следующее краткое изложение правильным (в отношении только приведенного выше примера с использованием краткого)?
- прямые инициализации без литья возможны только с использованием литералов или одиночных переменных (если значение находится в диапазоне объявленного типа)
- если rhs присваивания имеет дело с выражениями с использованием переменных, требуется литье
Но почему именно мне нужно передать аргумент второго вызова метода с учетом предыдущего резюме?