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

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.

Follow CodeGalaxy

Mobile Beta

Get it on Google Play
Send Feedback
Keep exploring
Java quizzes
Cosmo
Sign Up Now
or Subscribe for future quizzes