【问题标题】:static keyword and block in java [duplicate]java中的静态关键字和块[重复]
【发布时间】:2014-04-16 04:09:08
【问题描述】:

我在一个示例中看到了下面的代码,我无法理解它们在做什么以及它们在同一代码中代表什么

下面的java代码是什么意思

static 
{
    variable 1;
    variable 2;
    variable 3;
    variable 4;
}

【问题讨论】:

  • Static 应该是static,以小写字母开头。
  • 这些被称为静态块
  • 这么多副本可用。在Related 部分中检查Stackoverflow 的右侧。
  • 当询问这是什么时 - 应该如何找到重复项..?

标签: java static


【解决方案1】:

Java 中的静态块

与 C++ 不同,Java 支持一种特殊的块,称为静态块(也称为静态子句),可用于类的静态初始化。静态块中的这段代码只执行一次:第一次创建该类的对象或第一次访问该类的静态成员(即使您从未创建该类的对象)。例如,检查以下 Java 程序的输出。 // 文件名:Main.java 类测试{ 静态整数我; 整数 j;

// start of static block
static {
    i = 10;
    System.out.println("static block called ");
}
// end of static block

}

类主{ 公共静态 void main(String args[]) {

    // Although we don't have an object of Test, static block is
    // called because i is being accessed in following statement.
    System.out.println(Test.i);
}

}

输出: 静态块调用 10

此外,静态块在构造函数之前执行。例如,检查以下 Java 程序的输出。 // 文件名:Main.java 类测试{ 静态整数我; 诠释 j; 静止的 { 我 = 10; System.out.println("静态块调用"); } 测试(){ System.out.println("构造函数调用"); } }

类主{ 公共静态 void main(String args[]) {

   // Although we have two objects, static block is executed only once.
   Test t1 = new Test();
   Test t2 = new Test();
}

}

Output:
static block called
Constructor called
Constructor called

【讨论】:

    【解决方案2】:

    这是一个静态块。

    static{
      System.out.print("Hello");
    }
    

    静态块的属性:在第一个静态方法执行之前执行。

    【讨论】:

      猜你喜欢
      • 2016-11-11
      • 2011-02-25
      • 1970-01-01
      • 2011-12-10
      • 2022-10-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-30
      相关资源
      最近更新 更多