问题内容: 静态变量是在程序执行的整个过程中分配的,因此堆栈和堆都不方便。那在哪呢 应该在某个地方加载它吗? 问题答案: 静态字段在加载类时被初始化,并且在卸载该类的类加载器时被丢弃。它们可以被清理,甚至可以在另一个类加载器中复制。 对于使用OSGi的此类应用程序,静态变量在整个应用程序生命周期中都不会存在,因此可以多次重装。 实现方式可能取决于JVM,但Sun / Oracle JVM创建一个“
问题内容: 为什么说java中的静态变量尽量不要使用? 问题答案: 静态变量表示全局状态。这很难推理,也很难测试:如果创建对象的新实例,则可以在测试中推断其新状态。如果我使用的代码使用的是静态变量,则它可能处于任何状态-任何事情都可能对其进行修改。 我可以继续进行一段时间,但是要考虑的更大概念是,事物的范围越紧密,就越容易进行推理。我们善于思考小事情,但是如果没有模块化,就很难对一百万行系统的状态
问题内容: 另外,在网上可以找到许多创建静态变量的解决方案。(尽管我还没有看到我喜欢的一个。) 为什么Python不支持方法中的静态变量?这被认为是非Python的,还是与Python的语法有关? 编辑: 我专门询问了 为什么 进行设计决策,但我没有提供任何代码示例,因为我想避免解释来模拟静态变量。 问题答案: 忽略这一点的想法是,静态变量仅在以下两种情况下才有用:何时真正应该使用类以及何时真正应
问题内容: 我已经定义了一个对象并声明了一个静态变量。在该方法中,当我尝试打印实例和类变量时,两者都打印相同的值。 不是实例变量吗?它应该打印0而不是50吗? 问题答案: 不,只有一个变量-您尚未声明任何实例变量。 不幸的是,Java允许您访问静态成员,就像通过相关类型的引用访问静态成员一样。这是IMO的设计缺陷,某些IDE(例如Eclipse)允许您将其标记为警告或错误- 但这是语言的一部分。您
问题内容: 请参考下面的代码。运行代码时,我可以更改最终非静态变量的值。但是,如果我尝试更改最终静态变量的值,则会抛出异常。 我的问题是,为什么在非静态最终变量也不会抛出异常,反之亦然。为什么会有所不同? 问题答案: 该解决方案并非没有缺点,它可能无法在所有情况下都有效: 如果在字段声明中将字段初始化为编译时常量,则对该字段的更改可能不可见,因为该最终字段的使用会在编译时用编译时常量替换。 另一个
问题内容: 在其他任何地方都可以访问在静态块内声明的变量吗?他们是什么样的成员(即,他们也是静态成员吗?) 问题答案: 通常,程序员不需要在静态块内声明任何变量,通常这仅是为了确保初始化静态变量以供类的所有实例使用(取决于静态变量的范围)。 与方法和构造函数变量一样,在静态块内声明的变量将在该块内是局部的。 JDK文件