静态与内部类方法-性能[Java8]

静态与内部类方法-性能[Java8],java,java-8,jvm,Java,Java 8,Jvm,在Java8中,类中的静态方法和普通方法在性能上有什么区别吗 class First { public static String methodStatic1() { //performance } } vs 解决性能方面的问题:不必毫无意义地创建某个实例会更便宜,但差异很可能完全无关。随着时间的推移,专注于清晰的设计可能更为重要 实用工具方法通常是静态的,如果一个类中的所有方法都是静态的,那么将该类设置为final并包含一个私有构造函数以防止实例化可能是值得的。

在Java8中,类中的静态方法和普通方法在性能上有什么区别吗

class First {
    public static String methodStatic1() {
       //performance
    }
}
vs


解决性能方面的问题:不必毫无意义地创建某个实例会更便宜,但差异很可能完全无关。随着时间的推移,专注于清晰的设计可能更为重要

实用工具方法通常是静态的,如果一个类中的所有方法都是静态的,那么将该类设置为final并包含一个私有构造函数以防止实例化可能是值得的。从根本上说,对于不代表任何真实“事物”的实用程序类,构造实例在逻辑上是没有意义的——所以要阻止它


另一方面,这确实降低了灵活性:如果这些实用工具中的任何一种都包含多态性(例如用于测试目的)的功能,那么考虑将它们作为实例方法,并尝试提取一些有意义的类名来表示所涉及的“事物”。(例如,FooConverter实例化是有意义的,而FooUtil则没有。)

解决性能方面的问题:不必毫无意义地创建某个实例会更便宜,但两者之间的区别很可能完全无关。随着时间的推移,专注于清晰的设计可能更为重要

实用工具方法通常是静态的,如果一个类中的所有方法都是静态的,那么将该类设置为final并包含一个私有构造函数以防止实例化可能是值得的。从根本上说,对于不代表任何真实“事物”的实用程序类,构造实例在逻辑上是没有意义的——所以要阻止它


另一方面,这确实降低了灵活性:如果这些实用工具中的任何一种都包含多态性(例如用于测试目的)的功能,那么考虑将它们作为实例方法,并尝试提取一些有意义的类名来表示所涉及的“事物”。(例如,一个FooConverter实例化是有意义的-一个FooUtil没有。)

您检查过吗?欢迎来到Stack Overflow!请拿着(您得到了一个徽章!),四处看看,并通读,特别是在静态方法和实例方法之间进行选择通常是出于其他原因。看来这是个好主意。你是否遇到了让你问这个问题的特定问题?如果没有,请以合理的方式设计您的类,如果/当您有性能问题需要担心时,请担心性能。是的,静态似乎更快,但在我运行它时,JIT可能会进行一些优化。我想得到的答案不是通过测试,而是通过理论,为什么?你们检查过了吗?欢迎来到堆栈溢出!请拿着(您得到了一个徽章!),四处看看,并通读,特别是在静态方法和实例方法之间进行选择通常是出于其他原因。看来这是个好主意。你是否遇到了让你问这个问题的特定问题?如果没有,请以合理的方式设计您的类,如果/当您有性能问题需要担心时,请担心性能。是的,静态似乎更快,但在我运行它时,JIT可能会进行一些优化。我想得到答案不是通过测试,而是通过理论,为什么?
class Second {
    public String method2() {
       //performance
    }
}