Java 程序的输出是如何产生的?
以下程序的输出为: 代码如下:Java 程序的输出是如何产生的?,java,Java,以下程序的输出为: 代码如下: class StaticSuper{ static { System.out.println("superstatic block"); } StaticSuper(){ System.out.println("super constructor"); } } public class StaticClassExample extends StaticSuper{ st
class StaticSuper{
static {
System.out.println("superstatic block");
}
StaticSuper(){
System.out.println("super constructor");
}
}
public class StaticClassExample extends StaticSuper{
static int rand;
static {
rand =(int) (Math.random() * 6);
System.out.println("static blockn" + rand);
}
StaticClassExample(){
System.out.println("constructor");
}
public static void main(String[] args) {
System.out.println("inmain");
StaticClassExample st= new StaticClassExample();
}
}
为什么“inmain”虽然在main()
中是第一个,但却排在第三位?请给我解释一下:
static {
// some lines
}
在课堂上 您看到的
静态
块就是我们所说的静态初始值设定项,它的工作通常是初始化类中的某些内容(可能是类范围的状态或某种资源)
当运行时加载类时调用它,这就是为什么它可以在运行
main
之前运行。1:当使用new=>创建实例时,它调用构造函数
2:当调用构造函数时,会调用父构造函数
3:而且每当加载类时,即使对于构造函数,也会首先执行静态块
这样你就得到了你得到的订单
因为您正在执行类,所以首先检查所有静态块的完整文件,甚至在调用main方法之前就执行静态块
请给我解释一下表中静态{//某些行}的含义
班级
这叫一个。它是在类被加载(确切地说是初始化)时执行的。静态块将在main()
方法之前执行
为什么“inmain”虽然在main()中是第一个,却排在第三位 由于静态块是在
main()
之前执行的,因此它会出现在打印列表的第三个位置,当您创建StaticClassExample
类的实例时,首先调用它的父构造函数,然后调用它自己的构造函数
因此,在加载类时调用输出。静态块。这就是为什么先打印静态文件的打印输出。
静态变量意味着该类的不同实例不会有该变量的单独副本。
静态代码块仅用于在类加载时执行某些操作 是作业吗?你的想法是什么?我建议你学习java初始化顺序,也看看静态块。另外,我建议你学习搜索的魔力
static {
// some lines
}