当前位置: 首页 > 知识库问答 >
问题:

JAVA中何时使用静态/非静态变量[duplicate]

史景铄
2023-03-14

我不知道什么时候在程序中使用一个静态/非静态变量。

package slides;

public class Person {
        
    String name;
    int age;
    boolean isStaff;
    
    public Person(String name, int age, boolean isStaff) {
        // TODO Auto-generated constructor stub
        
        this.name = name;
        this.age = age;
        this.isStaff = isStaff;
        System.out.println(this);
    }
    
    /*
    public static boolean Staf () {
        
        return isStaff;
    }
    */

}

我理解非静态/静态变量之间的区别,但我只是不知道何时使用每一个变量。那么在上面的代码中,为什么函数staf不能是静态的呢?(什么时候应该是静态的?)

共有1个答案

宇文峰
2023-03-14

您不能访问非静态(实例)变量,除非使用以下方法:a)引用实例(MyPerson.isStaff,这将违反封装)或b)非静态(实例)方法。

关于什么时候应该使用static,在这个很容易找到的网站上有很多讨论和抨击。

 类似资料:
  • 问题内容: 我已经定义了一个对象并声明了一个静态变量。在该方法中,当我尝试打印实例和类变量时,两者都打印相同的值。 不是实例变量吗?它应该打印0而不是50吗? 问题答案: 不,只有一个变量-您尚未声明任何实例变量。 不幸的是,Java允许您访问静态成员,就像通过相关类型的引用访问静态成员一样。这是IMO的设计缺陷,某些IDE(例如Eclipse)允许您将其标记为警告或错误- 但这是语言的一部分。您

  • 我有以下代码: 当我尝试编译它时,会出现以下错误: 因此,我尝试使dbConnect静态如下:

  • 我在阅读Kathy and Bert SCJP1.6时遇到了以下代码: 虽然是在跟踪变量的主题下,但我无法理解如何在main()方法(static)中引用非静态变量myBar?

  • 我尝试使用网络豆IDE在java中创建一个简单的类。每当我试图执行这个命令时,它都会发出这样的警告。从静态上下文引用的非静态变量“。谁能告诉我为什么会发生这种情况以及如何解决它。提前感恩节。

  • 我的程序有问题。Eclipse写道: 我做错了什么?我的应用程序中有2个错误。班你能改进我的代码并解释一下吗?先谢谢你。 多边形 地聚线

  • 问题内容: 根据Java,静态变量可以通过类名访问,但是即使Java不建议使用静态变量,类对象也可以访问它们,并且给出相同的答案。 我知道该变量只有一个副本,并且所有对象和其他事物的值都相同。Java为什么建议使用类名而不是类对象? 问题答案: 因为可能会造成混淆!静态成员上没有动态调度。 看一下这个令人困惑的代码:(可能是语法错误;我的Java生锈了) 看起来很混乱,因为方法似乎是多态的,所以输