考虑一些返回double
的方法。在某些情况下,我需要返回默认的零值。我可以明确地将其指定为return 0d
,但java允许我们使用自动转换将其指定为return 0
。
这种类型的转换是在编译时还是在运行时发生的?不指定类型(例如性能)是否会产生任何潜在的负面影响?
答案 0 :(得分:7)
它被称为widening primitive conversion。我没有理由使用0d
而不是0
:它是constant expression,因此编译器会自动将其转换为0d
。
如果您查看返回0
与返回0d
的字节码:
double a() { return 0; }
double b() { return 0d; }
你可以看到它完全一样:
double a();
Code:
0: dconst_0
1: dreturn
double b();
Code:
0: dconst_0
1: dreturn
因此不会有任何性能差异。