有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java非最终静态字符串是否比最终静态字符串更有效?

我刚刚在BlackBerry docs上读到一篇关于writing efficient code in J2ME的文章

在那篇文章中,有一节建议您“对字符串使用静态变量”原因是,由于编译器将static final引用作为字符串文本内联,因此最好将其保留为非最终引用(我猜假设是检索静态引用比从字符串池检索便宜?)

所有JVM都是这样吗??在我上一份工作中,我的老板反复提醒我们,我们应该总是,总是,用static final作为我们的常数。我们用Java做嵌入式编程,所以他对性能非常挑剔(虽然我不确定他是更关心内存还是速度)。我的老板多年来一直在做Java,他对自己的东西非常了解,所以我采纳了他的建议;现在我得到了矛盾的建议

那么哪一个更好呢?您可以从内存保护的角度或速度的角度来回答,也可以从J2ME或J2SE的角度来回答


共 (1) 个答案

  1. # 1 楼答案

    一般来说,它们应该是相同的。(与相同的定义为足够接近,它永远不会有意义)

    我非常强烈地认为,你应该对你的意图进行编码(即,静态与非静态性的定义是,这是一个常量还是一个实例常量),而不是一些任意的“性能增强”

    如果您发现这是一个严重的性能问题(并且只有在您进行测量之后!),我会将其归类为编译器/JVM缺陷,并将解决方法(替换其静态特性)放在适当的位置,并用注释说明原因