将char隐式转换(或缺少)到int

时间:2018-05-15 14:33:22

标签: java

我正在攻读我的OCA考试,并从Mala Gupta那里遇到了这个问题:

class Course {
    void enroll(long duration) {
        System.out.println("long");
    }
    void enroll(int duration) {
        System.out.println("int");
    }
    void enroll(String s) {
        System.out.println("String");
    }
    void enroll(Object o) {
        System.out.println("Object");
    }
} 
     

以下代码的输出是什么?

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
}

0 个答案:

没有答案