【发布时间】:2014-08-12 23:18:53
【问题描述】:
我有两个关于对象和在 Java 中使用静态的问题。我发现如果我在相同的背景下提出问题,我可以最好地解释我的问题:
我的程序中有一个主要课程。首先它初始化了很多东西,然后它启动了 run 方法,该方法在 while (true) 循环中循环。
我还有很多其他类,比如我在主类初始化期间创建的一个圆圈,并按照myCircle = new Circle(); 的行保存在一个局部变量中。
我还制作了一些所有变量和方法都是静态的类。
我注意到我不必在初始化期间创建此类的对象,因为其中的所有内容都是静态的。每当我需要这些课程之一的东西时,我都可以将其称为 StaticClass.someMethod() 或 StaticClass.someVariable 。
这与我去的圈子 myCircle.anotherMethod() 形成鲜明对比。如果我将该方法设为静态,我可以使用 Circle.anotherMethod() 。
现在我的问题是:如果我可以将类中的所有内容都设为静态(假设我只需要一个这样的对象),为什么还要创建一个新对象并保存它?
更重要的是:我的一个静态类有大量常量,它们是从文件中读取的图像。由于我还没有制作构造函数,所以我不知道它何时实际加载图像。有几个不同的场合我会打电话给StaticClass.someImage,我想知道它现在是否正在多次从文件中加载图像。
所以我的第二个问题是:Java 什么时候加载没有构造函数的静态类的所有变量? (换句话说,它何时创建该对象?)
【问题讨论】: