在重载概念中,我有一个疑问,就是这样.当我使用int值重载方法时,方法调用的是float参数方法,而不是double参数方法.
void method1(float f){
System.out.println('float');
}
void method1(double f){
System.out.println('double');
}
Run Code Online (Sandbox Code Playgroud)
方法调用:
method1(10);
Run Code Online (Sandbox Code Playgroud)
输出:浮动
如此链接中的java教程中所述, 浮点字面值的类型为float,如果它以字母F或f结尾; 否则它的类型是双倍的,它可以选择以字母D或d结尾.
对于上面的情况,方法调用应该调用double参数方法.但它调用了float参数方法.
如何在这个区域发生超载过程?
如果我写这样的东西
System.out.println(18);
Run Code Online (Sandbox Code Playgroud)
哪种类型有'18'?是int还是byte?或者它没有类型吗?
它不能是int,因为这样的东西是正确的:
byte b = 3;
Run Code Online (Sandbox Code Playgroud)
这是不正确的:
int i = 3;
byte bb = i; //error!
Run Code Online (Sandbox Code Playgroud)
编辑:我想我在Assignment Conversion的规范中找到了正确的部分:
常量的编译时缩小意味着代码如下:
byte theAnswer = 42;
被允许.如果没有缩小,整数文字42的类型为int的事实意味着需要转换为字节:
byte theAnswer =(byte)42; //允许施放但不是必需的