Каким будет результат выполнения программы?

class A {
    static byte m1() {
      final char c1 = '\u0001';
      return c1;                                  // 1
    }
    static byte m2(final char c2) { return c2; }  // 2
    public static void main(String[] args) {
        char c3 = '\u0003'; 
        System.out.print("" + m1() + m2(c3));         // 3
    }
}
Explanation
Ошибка компиляции в строке 2 возникает из-за невозможности выполнить неявное преобразования типа выражения в return (char) к типу, указанному в заголовке метода (byte).
Ошибки можно избежать, если выполнить явное преобразование типа: "return (byte) c2;"
В похожей ситуации в строке 1 ошибка компиляции не возникает, потому что c1 - это константа и, фактически, компилятор имеет дело с выражением "return 1" - а это значение попадает в диапазон byte.

Следи за CodeGalaxy

Мобильное приложение Beta

Get it on Google Play
Обратная Связь
Продолжайте изучать
тесты по Java
Cosmo
Зарегистрируйся сейчас
или Подпишись на будущие тесты