Java 将字符隐式转换(或缺少)为int
我在为我的OCA考试学习,在Mala Gupta遇到了这个问题: 以下代码的输出是什么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
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
}