为什么编译器在返回错误类型时不会抱怨?

Joh*_*Doe 0 java

考虑到下面的功能,我注意到编译器没有发出任何问题:

private static int returnTwoTypes() {
    int a = 1;
    if (a == 1) {
        return -1;
    }
    return 'a';
}
Run Code Online (Sandbox Code Playgroud)

为什么我可以在函数返回类型时返回a character和a ?intint

Era*_*ran 7

A char是一个可以自动提升为的整数类型int.因此返回一个方法int可以返回一个char.