gpt4 book ai didi

java - Java 中的常量串联

转载 作者:行者123 更新时间:2023-12-01 08:07:42 28 4
gpt4 key购买 nike

如果我有常量

public static final String PREFIX = "meter.";

public static final String READING = "reading";

public static final String LEVEL = "level";

我有一个代码

run() {
dao.set("meter.reading", x);
dao.set("meter.level", y);
}

考虑到 run() 每天会被调用数百万次,

按如下方式编写上述代码是否会因串联而降低我的性能?我想维护与前缀分开的常量,因为它们在各种上下文中使用和不使用前缀

run() {
dao.set(PREFIX+READING, x);
dao.set(PREFIX+LEVEL, y);
}

最佳答案

这不会降低性能,因为您使用的是编译时常量表达式。

PREFIX+READING

编译器会为您连接它,并且它的性能与您尝试过的字符串文字相同。

JLS, Section 15.28 ,定义常量表达式:

A compile-time constant expression is an expression denoting a value of primitive type or a String that does not complete abruptly and is composed using only the following:

(其他选项)

  • The unary operators +, -, ~, and ! (but not ++ or --) (§15.15.3, §15.15.4, §15.15.5, §15.15.6)

(其他选项)

  • Simple names (§6.5.6.1) that refer to constant variables (§4.12.4).

(其他选项)

Compile-time constant expressions of type String are always "interned" so as to share unique instances, using the method String.intern.

关于java - Java 中的常量串联,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20201461/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com