java中的字符串文字与常量文件

时间:2017-02-17 19:06:13

标签: java string constants string-literals

创建单独的常量文件(如下面的“常量”类)直接写入stringVar.equals("name")等Java文件的整体优势(在内存管理方面等)是什么?

public final class Constants {
    // Hide the constructor
    private Constants(){}
    public static String NAME="name";
}

我知道即使我们写了2次使用“name”(如下所示),在String池中只会创建一个文字吗?

stringVar1.equals("name")stringVar2.equals("name")

3 个答案:

答案 0 :(得分:3)

一个原因是重复使用它(因此可以防止错别字错误)。

如果您使用的是IDE,与普通字符串搜索相比,以更加非模糊的方式执行使用情况查找变得更加容易。

评论中已经注意到的另一个是记忆,但正如我所看到的,上述两个原因更为重要 - 一般用法。我的不好。 Looks like memory has not much to do with it - atleast in case of static-final fields

答案 1 :(得分:2)

这与效率无关;这是关于可维护性的。

常量在一个地方定义值"name",并将常量名称(您选择NAME)与它相关联。

在您的示例中,常量名称不会告诉我们任何内容。但它可能是,例如,public static String FIRST_NAME_FIELD = "name"。然后,在Constants类和每次使用中,字符"name"的含义都会更清楚。

当然,如果您稍后需要将"name"更改为"first_name",则会更容易。

答案 2 :(得分:1)

性能方面,java倾向于在S​​tring池中重用字符串。

通常在您知道值不会改变或不得被其他任何人更改时使用常量。

对于常量,您必须将final添加到变量声明:

public static final String NAME="name";

常量与更好的编码,组织和重用比与性能更相关。