之间有什么区别(内存方面)
private static final String FAILURE_MESSAGE= "...";
protected String getFailedMsg() {
return FAILURE_MESSAGE;
}
Run Code Online (Sandbox Code Playgroud)
和
protected String getFailedMsg() {
return "...";
}
Run Code Online (Sandbox Code Playgroud)
假设FAILURE_MESSAGE仅从上述函数中引用。
我的意思是,在上述情况下,上述对象/字符串在内存中保存在何处以及如何保存?它是 JVM 特定的吗?
编辑:我知道字符串在第一种方法中被保留,但是在调用函数之前,在第二种方法中它的值存储/保留/(保留?)在哪里?
作为事后的第二次编辑 - 如果字符串被替换为整数或其他不是字符串的类怎么办?
两种情况下生成的字节码是相同的:
protected java.lang.String getFailedMsg()
0 ldc 2 (java.lang.String) "..."
2 areturn
Run Code Online (Sandbox Code Playgroud)
所以它是纯粹的糖。