[英]Local variables or member variables in Java
我对Java中的局部变量和成员变量有疑问。 情况是:有时,如果我定义了局部变量,则必须将该变量传递给方法调用的多个级别。 我经常想,为什么我应该只为该类定义一个成员变量,以便该变量在类中的任何地方都可用。 类的成员变量就像一个可在类中的任何位置访问的全局变量。
这种情况的最佳做法是什么? 或者什么是正确的做法?
如果我将它定义为成员变量,它应该是静态还是非静态变量?
成员变量包含特征 - 属性是另一个术语 - 用于由类表示的程序中的“事物”。 如果您的变量包含类似的内容,则使其成为成员变量; 如果没有,那就不要。
静态变量保持类本身的特征,而不是该类对象的特征。
不要根据你是否“通过......进入多级方法调用来做出决定。
考虑到你的一般问题,我从我的经验中得出了这些指导:
对于你的第二个问题:我通常将静态变量定义为final,使它们成为常量。 多线程环境中的非最终静态成员可能会轻易引入竞争条件。 如果需要,更容易访问非静态成员线程安全。
如果您决定声明成员变量,那么您应该考虑变量范围。 如果您只是减少内部方法调用的参数数量,则可以考虑将变量声明为private
。
您应该谨慎使用Static
因为该类的每个实例都将使用变量的相同副本。
这是行为的。 如果您的变量是类属性的一部分,即表征类行为,则将其定义为类成员变量,否则在方法内部定义局部变量。
在我看来,传递参数在属性类型定义中没有贡献。
这取决于。
如果您希望所有(或几个)方法访问相同的成员变量,则在类中声明它。
是否静态取决于信息属于类(静态)还是属于类的实例(非静态)。
1.)如果你打算在多种方法中使用它,需要传递它的成员变量。 如果仅用于该方法,则将其设置为本地。
2.) static
意味着它们只是该变量的一个实例,该变量在所有事物之间共享。 所以例如我有一个totalGameScore
变量, totalGameScore
都能保持整个游戏的得分。 您想将该变量设为static
。 除此之外,我可以说我的敌人有一个health
变量。 每个敌人都有自己的health
所以我不会让那个变量变得static
。
您还可以将成员变量声明为private
以便其他类无法访问它们。 Constants
通常应该始终是成员变量。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.