我正在攻读我的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
}