JVM 字符串存储在内存中

Vic*_*Vic 5 java memory jvm

之间有什么区别(内存方面)

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 特定的吗?

编辑:我知道字符串在第一种方法中被保留,但是在调用函数之前,在第二种方法中它的值存储/保留/(保留?)在哪里?

作为事后的第二次编辑 - 如果字符串被替换为整数或其他不是字符串的类怎么办?

Tre*_*ald 1

两种情况下生成的字节码是相同的:

protected java.lang.String getFailedMsg()
    0 ldc 2 (java.lang.String) "..."
    2 areturn
Run Code Online (Sandbox Code Playgroud)

所以它是纯粹的糖。