返回数字时应该显式指定返回类型吗?

Dmi*_*ach 1 java performance

考虑一些方法返回double.在某些情况下,我需要返回默认的零值.我可以明确地将其指定为return 0d,但java允许我们将其指定为return 0自动转换.

这种类型的转换是在编译时还是在运行时发生的?不指定类型(例如性能)是否会产生任何潜在的负面影响?

And*_*ner 7

它被称为扩展原始转换.没有理由使用0d0:这是一个常量表达式,因此编译器将其转换为0d自动.

如果你查看返回0vs返回的字节码0d:

double a() { return 0; }
double b() { return 0d; }
Run Code Online (Sandbox Code Playgroud)

你可以看到它完全一样:

  double a();
    Code:
       0: dconst_0
       1: dreturn

  double b();
    Code:
       0: dconst_0
       1: dreturn
Run Code Online (Sandbox Code Playgroud)

所以没有任何性能差异.