我有一个关于在java中创建新对象的问题.
让我们说我有方法叫: foo(String[] a)
我想传递给foo一个新String[]的只有一个用途的东西更好
表现1或2
1.
String[] a = new String[]{"a"};
foo(a);
Run Code Online (Sandbox Code Playgroud)
2.
foo(new String[]{"a"});
Run Code Online (Sandbox Code Playgroud)
谢谢你的帮助
你可以检查字节码:
1.
public static void main(java.lang.String[]);
Code:
0: iconst_0
1: anewarray #2 // class java/lang/String
4: astore_1
5: aload_1
6: invokestatic #3 // Method foo:([Ljava/lang/String;)V
9: return
Run Code Online (Sandbox Code Playgroud)
2.
public static void main(java.lang.String[]);
Code:
0: iconst_0
1: anewarray #2 // class java/lang/String
4: invokestatic #3 // Method foo:([Ljava/lang/String;)V
7: return
Run Code Online (Sandbox Code Playgroud)
唯一的区别是在(2)中,没有存储引用(astore_1),也没有需要加载(aload_1).这几乎肯定不会导致性能差异(你不应该担心这种微小的优化),但如果你不打算a在程序中再次引用(如你在前面提到的那样),你也可以使用选项(2).您的评论)并且没有可读性侵权.
我认为可读性组件非常重要:我宁愿创建一个变量来存储数组(即使我永远不会多次引用这个变量),而不是一条超长,不可读的行.当然,在您的示例中,可读性没有问题,但是在出现更复杂的情况时需要考虑这个问题.
| 归档时间: |
|
| 查看次数: |
153 次 |
| 最近记录: |