【发布时间】:2017-11-16 08:36:32
【问题描述】:
当每次初始化类并且方法不是静态的(new Class())或者这个类中的方法是静态的并且它们的用法类似于Class.method()时,性能差异有多大?
示例代码:
//File Class1
public class Class1{
public static void myMethod(){
System.out.println("Static method, usage: Class1.myMethod();")
}
}
//File Class2
public class Class2{
public void myNonStaticMethod(){
System.out.println("Non static method, usage: Class2 class2 = new Class2(); class2.myNonStaticMethod();")
}
}
哪个会更快?静态还是带类初始化的方法?
PS。对不起,如果我做错了什么。英语不是我的主要语言。 :P
【问题讨论】:
-
那里没有真正的问题。选择一个而不是另一个的重点不是效率,而是目的和要求。
-
那么当我携带性能时,哪个更好用?在某些情况下我不需要“超级”,所以如果静态更快,我可以在那里使用它,但它好吗?
-
为什么要为每个调用创建一个
Class2的新实例?该方法与该类的实例有什么关系?您希望该方法可被覆盖吗? -
出于同样的原因,每次创建新文本块时都初始化字符串。请注意,这只是一个示例代码,我只是询问性能差异:P
-
正如其他人已经说过的那样,静态与否不是您应该决定性能标准的事情,但该方法是否需要对象实例才能正常工作。如果方法不需要对象并且其内部状态使其成为静态。
标签: java class static initialization