|
|
1
53
在您的特定示例中,由于编译器内部使用
每当执行上述第3行时
相反,在
仅1个
这主要是因为编译器不够聪明,无法理解第一个循环相当于第二个循环,也无法生成更高效的(字节)代码。在更复杂的情况下,即使是最聪明的编译器也不可能知道。如果你绝对需要这种优化,你必须使用
|
|
|
2
5
快速答案是性能: 当您使用本机String类时,它会操作不可变的字符串,这意味着当您在编写
它将创建两个字符串“java”和“is woulding”,而不是从前两个字符串(“java”和“是真棒”)中创建新的第三个字符串“java是真棒”,这两个字符串后来可能会被垃圾收集器删除(因为它们在应用程序中不再使用)。这是一个缓慢的解决方案。 更快速的解决方案是StringBuffer类的设备,它通过智能算法为合并字符串提供缓冲区(从名称中可以明显看出),因此不会在连接过程中删除初始字符串。 如果您正在编写单线程应用程序(在多个线程访问同一对象的过程中没有并发问题),那么最好应用StringBuilder,它的性能甚至比最初的StringBuffer类更快。 |