Java 将字符隐式转换(或缺少)为int

Java 将字符隐式转换(或缺少)为int,java,Java,我在为我的OCA考试学习,在Mala Gupta遇到了这个问题: 以下代码的输出是什么 class EJavaGuru { public static void main(String args[]) { Course course = new Course(); char c = 10; course.enroll(c); course.enroll("Object"); } } a. Compilation e

我在为我的OCA考试学习,在Mala Gupta遇到了这个问题:

以下代码的输出是什么

class EJavaGuru {
    public static void main(String args[]) {
        Course course = new Course();
        char c = 10;
        course.enroll(c);
        course.enroll("Object");
    }
}

a. Compilation error 
b. Runtime exception
c. int 
   String
d. long 
   Object
正确答案是(c),我在运行代码后也验证了它。但是,为什么在方法调用中,
char
数据类型被扩展为
int

根据我对Java中数据类型隐式转换的了解,默认情况下,
char
不会隐式转换为
int

TL;DR:为什么下面的代码不起作用

int x = 5;
char c;
c = x; // Compliation error here
但这是可行的:

static void intParameterMethod( int someInt ) {}
public static void main( String args[] ) {
    char c = 5;
    intParameterMethod( c ); // No compilation error here
}

你可以将一个字符放入一个整数。你可能无法将一个整数放入一个字符。啊,好的。我的坏问题,愚蠢的问题。应该在发布之前检查一下。谢谢你的帮助:D请将你的评论作为答案提交给我,这样我才能把它标记为正确。这背后的“机械师”叫做加宽。
char
可以扩展为
int
。原语加宽的完整列表可以在@AniruddhaDeb中找到,不用担心。所有这些内容都可以在JLS中找到——虽然不是一篇令人兴奋的文章(大多数时候),但几乎所有Java行为都是在JLS中解释的,如果不总是辩护的话。
static void intParameterMethod( int someInt ) {}
public static void main( String args[] ) {
    char c = 5;
    intParameterMethod( c ); // No compilation error here
}