Ale*_*lex 4 java oop performance static
我知道静态是什么,但不知道何时使用它.
静态变量:我只将它用于常量字段.有时候类中有几十个常量,所以使用静态常量可以节省大量内存.还有其他典型的用例吗?
静态方法:我在制作关于算法的类时使用它.例如,提供不同排序算法的类.它是否反对OOP设计?我认为保持这种方式比在每个需要使用它们的类中实现排序算法更好.我错了吗?什么是好用例?
此外,使用静态和非静态字段/方法之间是否存在性能差异?
Jef*_*rey 18
您正在描述使用静态的情况,但这并不能完全解释为什么要使用静态和非静态 - 它们不仅仅是常量和实用方法的关键字.
当某些东西不是静态的(实例)时,它意味着每个类的实例都有一个实例.每个人都可以独立改变.
当某些东西是静态的时,意味着它只有一个副本用于该类的所有实例,因此从任何位置更改它会影响所有其他实例.
静态变量/方法通常使用较少的内存,因为它们只有一个副本,无论您拥有多少个类实例.静电,如果使用得当,在面向对象的设计中是完美的.
如果你有一个方法/变量只需要一个实例(例如常量或实用方法),那么只需将其设为静态.理解虽然使方法静态意味着它不能被覆盖.因此,如果您想要在子类中覆盖一个方法,那么不要将其设置为静态.
一般的经验法则是 - 如果您只需要一份副本,请将其设为静态.如果每个实例需要一个副本,则将其设置为非静态.
静态变量属于一个类,因此由所有对象共享,因此如果您确实希望共享该变量,则内存使用量会更少。如果将变量声明为公共和静态,那么它对所有人都可用。
静态方法通常是实用方法,根据访问修饰符,它们可以在类内或跨类使用。静态实用程序类将有助于再次减少内存使用,因为您不需要创建对象来调用这些方法。