当前位置: 首页 > 面试题库 >

在Java中声明“全局”变量时,“静态”到底是什么意思?

舒阳州
2023-03-14
问题内容

我已经多次遇到这个问题,而且我从不费心去了解它为什么会发生,并了解“静态”的实际含义。我只是应用了Eclipse建议的更改并继续进行。

public class Member {

 // Global Variables
 int iNumVertices;
 int iNumEdges;

 public static void main(String[] args) {

  // do stuff

  iNumVertices = 0; // Cannot make a static reference to the non-static field iNumVertices

  // do more stuff

 } // main end 
}

蚀告诉我要做static int iNumVertices;,但我不确定为什么。那么“静态”到底是什么,它是如何使用的,使用“静态”的目的是什么,为什么它给了我这个问题?


问题答案:

这是您的示例

public class Member {

    // Global Variables
    int iNumVertices;
    int iNumEdges;

    public static void main(String[] args) {

        // do stuff

        iNumVertices = 0; // Cannot make a static reference to the non-static field iNumVertices

    }
}

该方法main是与该类关联的静态方法。它没有与的实例相关联Member,因此它无法访问与的实例相关联的变量Member。解决方案 不是
使这些字段为静态。相反,您需要创建一个Member使用new关键字的实例。

这是修改后的版本:

public class Member {
    // Fields
    private int iNumVertices;
    private int iNumEdges;

    public Member(){
        // init the class
    }

    public static void main(String[] args) {
        Member member = new Member();
        member.iNumVertices = 0;
        // do more stuff
    }
}

发现自己正在创建全局静态变量,这表明您应该仔细考虑如何设计某些事物。这并不 总是 错误的,但是它应该告诉您考虑自己在做什么。



 类似资料:
  • 问题内容: 我想制作一个可以在整个应用程序中访问的自定义对象的全局数组(AppDelegate,ViewController类,TableViewController类等)。我已经研究了一种解决方法,但没有找到答案。我曾尝试将数组设置为公共范围,但是收到了编译器警告,提示当我尝试在其他文件中访问该数组时,出现错误提示 我将如何使该数组可被应用程序中的所有文件全局访问,我将在哪里实例化该数组? 问题

  • 嗨,伙计们,我想知道在声明变量时是如何工作的?您可以在下面代码的第3行中看到这一点。函数后的$output设置为函数,然后将$error变量设置为前一个命令的退出代码。在这种情况下怎么办/如何处理?

  • 问题内容: 在其他任何地方都可以访问在静态块内声明的变量吗?他们是什么样的成员(即,他们也是静态成员吗​​?) 问题答案: 通常,程序员不需要在静态块内声明任何变量,通常这仅是为了确保初始化静态变量以供类的所有实例使用(取决于静态变量的范围)。 与方法和构造函数变量一样,在静态块内声明的变量将在该块内是局部的。 JDK文件

  • 问题内容: 如何在JavaScript中声明全局变量? 问题答案: 如果必须在生产代码中生成全局变量(应避免使用),请 始终 明确 声明它们: 虽然可以通过省略来定义全局变量(假设没有同名的局部变量),但这样做会生成 隐式 全局,这是一件不好的事情,并且在 严格模式下 会产生错误。

  • 我在typescript中声明了一个全局变量,类似于:global。test=“something”我尝试这样做,我得到错误属性“test”在类型“Global”上不存在。

  • 问题内容: 我在一个组件(在应用程序中加载的第一个组件)中初始化了翻译对象。所有其他组件都需要相同的对象。我不想在每个组件中重新初始化它。怎么回事?使它可用于窗口范围并没有帮助,因为我需要在方法中使用它。 请提出针对这些问题的通用解决方案,而不是针对国际的解决方案。 问题答案: 为什么不尝试使用Context? 您可以在任何父组件中声明一个全局上下文变量,并且可以在组件树中通过来访问此变量。您只需