繁体   English   中英

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

[英]Local variables or member variables in Java

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

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

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

成员变量包含特征 - 属性是另一个术语 - 用于由类表示的程序中的“事物”。 如果您的变量包含类似的内容,则使其成为成员变量; 如果没有,那就不要。

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

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

考虑到你的一般问题,我从我的经验中得出了这些指导:

  • 使用最小的可能范围。 如果局部变量很好,那么为什么要使用成员变量?
  • 根据域对类进行建模。 如果您有一个值并且它是类责任的一部分,那么将其建模为类成员似乎是合适的。

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

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

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

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

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

这取决于。

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

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

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

2.) static意味着它们只是该变量的一个实例,该变量在所有事物之间共享。 所以例如我有一个totalGameScore变量, totalGameScore都能保持整个游戏的得分。 您想将该变量设为static 除此之外,我可以说我的敌人有一个health变量。 每个敌人都有自己的health所以我不会让那个变量变得static

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM