【发布时间】:2018-09-01 06:36:46
【问题描述】:
在下面的代码中
class Main {
void m1(double x){
System.out.println("double");
}
void m1(float x){
System.out.println("float");
}
void m1(long x){
System.out.println("long");
}
void m1(byte x){
System.out.println("byte");
}
void m1(short x){
System.out.println("short");
}
void m1(int x){
System.out.println("int");
}
public static void main(String[] args) {
Main m = new Main();
m.m1(1);
}
}
为什么输出是“int”而不是“byte”或“long”或“short”或“float”或“double”?
如果按照“byte”->“short”->“int”->“long”->“float”->“double”的自动转换,那么输出应该打印“double”对吗?
(https://www.geeksforgeeks.org/type-conversion-java-examples/)
【问题讨论】:
-
您通过传递一个 int 作为参数来调用 int 重载。为什么不输出int?
-
1 = int。 1.0 = 双倍。 1.0f = 浮动。 1L = 长;不能对字节或短使用文字(没有转换)。
-
好的。所以基本上要传递除 int 以外的任何其他数据类型(在这种情况下),我们应该键入 cast 并发送。是正确的还是我遗漏了什么?
标签: java type-conversion overloading