xgo*_*mez 7 java performance coding-style constants
我需要存储一个代码的常量4类字母.我可以:
static final String CODE_LETTERS = "TRWAG";
Run Code Online (Sandbox Code Playgroud)
要么
static final char[] CODE_LETTERS = {'T', 'R', 'W', 'A', 'G'};
Run Code Online (Sandbox Code Playgroud)
之后,我可以通过两种方式获得其中一个角色:
final char codeLetter = CODE_LETTERS.charAt(index);
Run Code Online (Sandbox Code Playgroud)
要么
final char codeLetter = CODE_LETTERS[index];
Run Code Online (Sandbox Code Playgroud)
什么是最好的方法?.请记住校正,表现等.
在这种情况下,性能无关紧要.如果真的应该是不变的,你就不能使用这种char[]方法.考虑:
public class Test
{
static final char[] CODE_LETTERS = {'T', 'R', 'W', 'A', 'G'};
public static void main(String[] args) throws Exception
{
System.out.println(CODE_LETTERS[0]); // T
CODE_LETTERS[0] = 'x';
System.out.println(CODE_LETTERS[0]); // x
}
}
Run Code Online (Sandbox Code Playgroud)
字符串是不可变的,char []不是.如果在类中将其定义为公共"常量",则String是实常数.
例如,如果你有这个:
public class MyClass {
public static final char[] CODE_LETTERS = {'h', 'e', 'l', 'l', 'o'};
....
}
Run Code Online (Sandbox Code Playgroud)
我可以偷偷摸摸地这样做:
MyClass.CODE_LETTERS[0] = 'Q';
Run Code Online (Sandbox Code Playgroud)
巴姆,我改变了你的"常数"的价值.
的final关键字仅影响参考阵列,它并不适用于数组元素.我一直看到类似的错误Collections.unmodifiableList(),人们认为它保护他们的列表,但客户端代码仍然可以访问和修改列表元素.
所以要回答你的问题,请使用String.
| 归档时间: |
|
| 查看次数: |
12940 次 |
| 最近记录: |