有什么区别(内存方面)
private static final String FAILURE_MESSAGE= "...";
protected String getFailedMsg() {
return FAILURE_MESSAGE;
}
和
protected String getFailedMsg() {
return "...";
}
假设 FAILURE_MESSAGE
仅从上述函数中引用。
我的意思是在上述情况下,上述对象/字符串保存在内存中的位置和方式? 它是特定于 JVM 的吗?
编辑:我知道字符串在第一种方法中是驻留的,但是在调用函数之前,在第二种方法中它的值存储/保存/(驻留?)在哪里?
事后的第二次编辑 - 如果字符串被替换为整数或其他一些不是字符串的类怎么办?
最佳答案
第一个示例无法编译,而第二个示例可以。
性能通常不如简单性和清晰性重要,这里有一个很好的例子。如果编译成功,第一个示例将和第二个示例一样快。
顺便说一句:不管一个字符串文字被使用了多少次,在多少类中,它们都是String.intern()。所以它们都是同一个对象。
关于java - JVM 字符串存储在内存中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9716533/