Java中的局部变量或成员变量

时间:2013-04-12 21:01:16

标签: java global-variables local member-variables

我对Java中的本地变量和成员变量有疑问。情况是:有时如果我定义一个局部变量,那么该变量必须传递给几个级别的方法调用。我经常想,为什么我要为类定义一个成员变量,以便变量在类中的任何位置都可用。类的成员变量就像一个可在类中的任何位置访问的全局变量。

  1. 这种情况的最佳做法是什么?或者什么是正确的做法?

  2. 如果我将其定义为成员变量,它应该是静态变量还是非静态变量?

6 个答案:

答案 0 :(得分:5)

成员变量包含特征 - 属性是另一个术语 - 用于由类表示的程序中的“事物”。如果你的变量有类似的东西,那就把它变成一个成员变量;如果没有,请不要。

静态变量包含类本身的特征,而不是该类对象的特征。

不要根据你是否“通过......进入多级方法调用来做出决定。

答案 1 :(得分:2)

考虑到你的一般性问题,我根据自己的经验提出了这些指导原则:

  • 使用最小的poosible范围。如果局部变量没问题,那么为什么要使用成员变量?
  • 根据域对类进行建模。如果你有一个价值并且它是阶级责任的一部分,那么将其建模为一个类成员似乎是合适的。

对于你的第二个问题:我通常将静态变量定义为final,使它们成为常量。多线程环境中的非最终静态成员可能很容易引入竞争条件。如果需要,更容易访问非静态成员线程安全。

答案 2 :(得分:0)

  1. 如果您决定声明成员变量,那么您应该考虑变量范围。如果您只是减少内部方法调用的参数数量,我会考虑将变量声明为 private

  2. 您应该小心使用Static,因为该类的每个实例都将使用相同的变量副本。

答案 3 :(得分:0)

这是行为。如果您的变量是类属性的一部分,即表征类行为,则将其定义为类成员变量,否则在方法内定义局部变量。

在我看来,传递参数对属性类型定义没有贡献。

答案 4 :(得分:0)

取决于。

如果您希望所有(或几个)方法访问相同的成员变量,请在类中声明它。

静态与否取决于信息属于类(静态),还是属于类的实例(非静态)。

答案 5 :(得分:0)

1。)如果你打算在多种方法中使用它,需要传递它的成员变量。如果它只是用于该方法,请将其设为本地。

2。)static表示它们只是在所有内容之间共享的变量的一个实例。例如,我有一个totalGameScore变量,无论如何都能保持整个游戏的得分。你想要变量static。除此之外,我可以说我的敌人有一个health变量。每个敌人都有自己的health所以我不会让变量static

您还可以声明成员变量private,以便其他类无法访问它们。 Constants通常应该始终是成员变量。