java – 在初始化对象或将其保存为变量并调用该方法时,调用方法
发布时间:2020-12-14 05:26:19 所属栏目:Java 来源:网络整理
导读:假设有一个ClassA类,它通过非静态方法给出了我需要的值. 如果我只需要一个ClassA的实例的值, 我想有两个可能的选择. double value =0 ; // The value I actually need,the object is just transitory1) ClassA a = new ClassA (hogehoge); value = a.getValu
假设有一个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加热之后,这些指令将被优化(消除),这根本就没有区别. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |