【发布时间】:2016-03-31 20:25:26
【问题描述】:
谁能解释为什么 toString() 和 name() 引用同一个字符串?当我使用 == 将它们与字符串文字进行比较时,它们都通过了!枚举名称如何与来自 JVM 的字符串池一起使用?
static enum User
{
BASIC, PREMIUM;
}
System.out.println("BASIC" == User.BASIC.toString()); // true
System.out.println("BASIC" == User.BASIC.name()); // true
【问题讨论】:
-
您正在测试的所有字符串在编译时都是已知的,因此它们都将被编译为相同的引用是有道理的。
-
@khelwood 您能否详细解释一下“已知字符串”在编译期间发生的情况。当您说“已知”时,您的意思是字符串常量?没有什么像 str1 + str2 ?
-
an
enum是一种类,它的name()方法返回一个字符串字面量。
标签: java string enums jvm string-pool