微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

java – 在初始化对象或将其保存为变量并调用该方法时,调用方法的速度更快

假设有一个ClassA类,它通过非静态方法给出了我需要的值.

如果我只需要一个ClassA的实例的值,
我想有两个可能的选择.

double value =0 ; // The value I actually need,the object is just transitory

1) ClassA a = new ClassA (hogehoge);
   value = a.getValue();

2) value = new ClassA(hogehoge).getValue();

我知道这两者可能有优势或劣势.
但一般来说,他们之间有什么区别?

在情况2),内存使用小于1)或….

解决方法

其实这两段代码会有一点区别:
***** Class1.p
       8: invokespecial #4                  // Method ClassA."<init>":(Ljava/lang/String;)V
      11: astore_3
      12: aload_3
      13: invokevirtual #5                  // Method ClassA.getValue:()D
      16: dstore_1
      17: dload_1
      18: dreturn
}
***** CLASS2.P
       8: invokespecial #4                  // Method ClassA."<init>":(Ljava/lang/String;)V
      11: invokevirtual #5                  // Method ClassA.getValue:()D
      14: dstore_1
      15: dload_1
      16: dreturn
}
*****

即我们在这里看到两个额外的变体#1说明:

11: astore_3
      12: aload_3

但是,似乎在jvm加热之后,这些指令将被优化(消除),这根本就没有区别.

原文地址:https://www.jb51.cc/java/122594.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐