Sen*_*rJD 3 java double long-integer
SSCCE:
public class Test {
public static void main(String[] args) {
Long a = new Long(1L);
new A(a);
}
static class A {
A(int i) {
System.out.println("int");
}
A(double d) {
System.out.println("double");
}
}
}
Run Code Online (Sandbox Code Playgroud)
输出:
double
Run Code Online (Sandbox Code Playgroud)
打印时不会出现编译错误,它可以正常工作并调用double-parameter构造函数.但为什么呢?
这取决于类型提升的规则:a 优先long转换为a .doubleint
A long总是可以适合a double,虽然如果它大于2的53次幂,精度可能会丢失long.所以你的编译器选择double构造函数比一个更好int.
(编译器不进行动态在一定意义检查1L 不适合的int).
| 归档时间: |
|
| 查看次数: |
398 次 |
| 最近记录: |