代码之家  ›  专栏  ›  技术社区  ›  user3303680

静态/类变量和GUI[重复]

  •  1
  • user3303680  · 技术社区  · 9 年前

    我最近为了学术目的被拉回到Java编程领域,在我的第一个项目中我遇到了一些有趣的事情。

    我不得不为一个店面设计一个GUI,它带有执行各种任务的按钮,我注意到我的变量发生了一些奇怪的事情。我的按钮通过其操作更改的任何CLASS VARIABLES都不需要声明为静态,而我的主方法接触的任何CLASSVARIABLEs都必须声明为静态。

    这是为什么?My Main Method和ActionListener Methods都在相同的执行级别上。(它们都在同一个类中,没有一个嵌入在一起)

    我希望这个问题不是太明显/愚蠢,我正在尽可能多地重新学习Java。

    1 回复  |  直到 7 年前
        1
  •  0
  •   Nathan Hughes    9 年前

    您的主方法是静态的,这意味着它不是在对象的实例上运行的,该方法是在类上调用的,而没有实例化该类的对象。这对主方法有一定的意义,因为它是程序所做的第一件事,因此无法实例化对象。

    静态方法和变量存在于类本身,而实例成员是(非静态)变量,是从类创建的每个对象的一部分。每个对象都有自己的为该类声明的实例变量副本,为每个对象提供自己的状态。由于静态变量在类上,并且类只有一个副本(类加载器只加载一次),因此每个静态变量只有一个。

    我用“类变量”指静态变量,用“实例变量”指非静态变量。

    在Swing GUI编程中,几乎没有理由使用静态变量,我的建议是尽可能避免使用静态变量。在Swing中,所有UI组件和侦听器都是对象,一旦主方法初始化并显示主jframe,通常就不需要其他静态方法或变量。