关于静态变量 [重复]

Posted

技术标签:

【中文标题】关于静态变量 [重复]【英文标题】:Regarding Static Variable [duplicate] 【发布时间】:2014-01-25 06:43:56 【问题描述】:
int a;
static int a;

两者占用相同的内存

我今天刚来,我不知道这样做有什么用::

private static final float INDICATOR_RADIUS = 1.0f;

这是一样的

private final float INDICATOR_RADIUS = 1.0f;

我不明白他们(http://developer.samsung.com/android/samples/Golf)为什么这样做?他们用了很多次

【问题讨论】:

【参考方案1】:
int a;
static int a;

两者占用相同的内存

不,他们没有。第一个占用类的四个字节每个实例。第二个占用四个字节,不管是 0 个实例还是 100 个实例。该字段与类型相关,与该类型的任何特定实例无关。

【讨论】:

+1 用于指出内存消耗之间的差异。【参考方案2】:

仅仅是因为他们希望static 变量在所有对象中都有一个实例。

【讨论】:

【参考方案3】:

您应该从 JAVA 的基础开始。

静态变量是与一个类相关联的变量,而不是该类的对象。静态变量可以通过调用类名来访问:ClassName.VariableName。

【讨论】:

【参考方案4】:

non-static 字段对于每个实例都是唯一的,它被称为 instance 字段。但是,static 字段是 Class 字段,由类的所有实例共享无论是声明为静态还是非静态,这两个字段的内存都是相同的

【讨论】:

【参考方案5】:

一个简单的答案是static 变量在整个类中只有一个值。 详细地说,静态变量为每个对象保持相同的值。并且静态变量与java类相关联,不像局部变量与类的每个对象相关联

更多详情,请关注Java tutorial

【讨论】:

我不喜欢“针对所有实例”的描述,因为这表明必须有 one 实例...更多的是变量没有关联与任何特定实例。

以上是关于关于静态变量 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

C中的局部静态变量范围[重复]

关于静态变量和非静态变量的区别

请教大家关于JAVA中的静态变量和静态方法

关于java静态变量取值的问题。

c#'静态'变量不返回值[重复]

关于静态变量和静态方法的测试