为什么Integer.toString()
方法是使用String.valueOf(int i)
实现的,而不是直接使用由String.valueOf(int i)
调用的静态方法Integer.toString(int i)
?Integer.toString()
更新:我有一个太阳(现在Oracle)JDK 1.6.0_12
为什么Integer.toString()
方法是使用String.valueOf(int i)
实现的,而不是直接使用由String.valueOf(int i)
调用的静态方法Integer.toString(int i)
?Integer.toString()
更新:我有一个太阳(现在Oracle)JDK 1.6.0_12
的工作,原因很可能是历史性的。 Java 1.0版本急于尝试满足(被认为是)关闭的机会窗口。在API设计中犯了许多错误。但到了Java 1.1时代,设计人员意识到修复API中的错误可能会破坏现有程序,并疏远开发人员和用户。所以他们选择了不确定的错误(尤其是轻微的不一致)。
这只是其中的一个小小的不一致。它在实践中没有什么区别,因为无论如何JIT编译器都会内联这些调用。
这意味着方法调用将被直接替换为“真实”代码来执行?我在哪里可以获得有关编译器的信息,以了解哪些优化已完成? – 2010-07-26 14:48:30
关于HotSpot编译器/优化器的细节并没有多少发表。但是,如果你真的感兴趣,你可以随时下载并阅读源代码。无论如何,内联过程调用是许多编译器为许多语言执行的标准优化。 – 2010-07-26 14:54:27
为什么你担心这样的小事? – polygenelubricants 2010-07-26 14:33:21
当我在公开课中创建一个公共方法时:我想知道为什么。 – 2010-07-26 14:35:51