例如,您想要反转一个字符串,有两种方法:
第一:
String a = "StackOverFlow";
a = new StringBuffer(a).reverse().toString();
Run Code Online (Sandbox Code Playgroud)
第二是:
String a = "StackOverFlow";
StringBuffer b = new StringBuffer(a);
a = b.reverse().toString();
Run Code Online (Sandbox Code Playgroud)
在上面的代码中,我有两个问题:
1)在第一个代码中,java StringBuffer之前是否在内存中创建了一个"虚拟对象" reverse并更改为String.
2)在上面的代码中,首先会比第二代更优化,因为它使GC更有效地工作?(这是我想问的一个主要问题)
两个片段将创建相同数量的对象.唯一的区别是局部变量的数量.这可能甚至不会改变堆栈上的数量等等 - 只是在第二个版本的情况下,其中一个堆栈插槽(b)的名称.
区分对象和变量非常重要.编写最易读的代码也很重要,而不是尝试微优化.一旦你有了明确的工作代码,你应该测量它是否足够快以满足你的要求.如果不是,您应该对其进行分析以找出最有效地进行更改的位置,并优化该部分,然后重新测量等.
| 归档时间: |
|
| 查看次数: |
108 次 |
| 最近记录: |