在我看来,在这两种方法中,第一种方法存在与string concat
和相关的性能问题toCharArray
。但有人告诉我,这两个操作都是在编译时发生的,所以没有性能开销。
如果这是真的,那么为什么编译时操作不是性能开销?
private final static char[] DigitTens = {
("0000000000"+ "1111111111"+"2222222222"+"3333333333"+"4444444444" //
+"5555555555"+"6666666666"+"7777777777"+"8888888888"+"9999999999")
.toCharArray();
};
对比:
private final static char[] DigitTens = {
'0', '0', '0', '0', '0', '0', '0', '0', '0', '0',
'1', '1', '1', '1', '1', '1', '1', '1', '1', '1',
'2', '2', '2', '2', '2', '2', '2', '2', '2', '2',
'3', '3', '3', '3', '3', '3', '3', '3', '3', '3',
'4', '4', '4', '4', '4', '4', '4', '4', '4', '4',
'5', '5', '5', '5', '5', '5', '5', '5', '5', '5',
'6', '6', '6', '6', '6', '6', '6', '6', '6', '6',
'7', '7', '7', '7', '7', '7', '7', '7', '7', '7',
'8', '8', '8', '8', '8', '8', '8', '8', '8', '8',
'9', '9', '9', '9', '9', '9', '9', '9', '9', '9',
};