【问题标题】:Why static fields are called "static"?为什么静态字段被称为“静态”?
【发布时间】:2011-02-21 03:48:43
【问题描述】:

在“静态变量”或“静态方法”中使用“静态”一词的原因是什么?

不是询问“静态”的定义,只是询问为什么这样称呼它。

【问题讨论】:

  • 好吧,如果你知道静态的定义,你就会明白为什么它们被称为静态变量和静态方法......
  • 因为它们不会改变...它们是静态的
  • @Scott,您是在认真建议static int x = 2; 永远不能将值更改为 3?
  • 没有,但是当你去寻找它时,static int x 总是在同一个地方。
  • 嗯,实际上,非静态对象在其生命周期内也会如此。您的 static int x 可能在下次实例化时(即重新运行程序时)位于完全不同的位置。静态实际上只是某些东西是特定于类还是特定于对象的。即使在概念来自的C语言下,静态也与位置无关。 其中一个的含义是静态(不是位置),在函数调用之间维护值,但所有其他的既不是不变的值也不是位置。

标签: java


【解决方案1】:

在此之前,它是 C++ 和 C 的保留。在 C 上下文中,它的含义之一是用于在调用之间保持其值的变量。我认为这就是“静态”的来源 - 它不会重置值(与值无法更改的 const 相反)

【讨论】:

  • +1 - 这与我们可能得到的一样接近。选择static 的最初原因,以及考虑了哪些其他替代方案,可能只有最初的 Oak 团队才知道……如果他们还记得 20 多年前的话。
  • 实际上,静态在 C 中是重载的。您给出的定义是当您在控制持续时间的函数中使用它时。它还用于函数之外,以限制某些内容对当前翻译单元的可见性。在 C++ 中,它在类中有第三种用途,即创建在所有实例之间共享的变量。请参阅stackoverflow.com/questions/943280/…,但最可能的解释是 +1。
【解决方案2】:

我想最好的理解方式是“静态”意味着不变,当您在类的不同实例之间切换时,变量的 位置 是不变的。最重要的是从你的脑海中消除任何想法,即静态变量的是不变的:它甚至可能被同一类的另一个实例改变。

【讨论】:

    【解决方案3】:

    在 Head First Java 中,有一个很好的静态解释。静态的意思是稳定不变,从意思上看是很明显的,很明显是不变的。

    Java 中的静态意味着共享。有一张很好的照片,两个孩子分享一个冰淇淋并显示静态变量类比。有关更多信息,请阅读 Head First Java。

    【讨论】:

      【解决方案4】:

      STATIC 1 的定义:施加 仅凭重量的力量 无动议2:属于或关于 静止或受力的物体 平衡点3:变化不大 4个: 以缺乏运动为特征, 动画或进度 b : 产生休息的效果或 静止 5 a : 站立或固定在一个地方: 固定 b 的水:储存在 a 坦克但没有压力

      只需将定义应用于变量...

      【讨论】:

      • 我不知道你是不是想搞笑。 这些定义中没有一个与 Java 中的静态匹配
      • @Software,如果你的意思是在一个地方,那就是垃圾。 所有变量在其生命周期内都是固定的,即使是 C 中的非静态文件级和自动变量,以及 Java 中的对象变量。
      • Java 中的所有静态意味着某物属于类而不是对象。在这个答案中,我什至看不到 anything 。该定义似乎倾向于const 而不是static
      • 显然变量是储存在水箱中的水,但不是在压力下。但说真的,我确实认为这个问题有点傻。
      • 根据附加信息:该文章实际上是针对非托管语言的。 Java 为您抽象了大部分内容。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-10-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-08-31
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多