这里的static在java中指的是什么

这里的static在java中指的是什么,java,methods,static,main,refer,Java,Methods,Static,Main,Refer,非常生锈,但我很确定我从未见过这样的代码。这是一个来自java联合考试的模拟问题,有人能告诉我第10行中的“static”是否连接到go()方法吗??主要是为什么输出是xycg public class testclass { testclass() { System.out.print("c "); } { System.out.print("y "); } public static void main(Str

非常生锈,但我很确定我从未见过这样的代码。这是一个来自java联合考试的模拟问题,有人能告诉我第10行中的“static”是否连接到go()方法吗??主要是为什么输出是xycg

public class testclass {

    testclass() {
        System.out.print("c ");
    }

    { 
        System.out.print("y ");
    } 

    public static void main(String[] args) { 
        new testclass().go(); 
    } 

    void go() {
        System.out.print("g ");
    } 

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

} 

它是缩进不良的代码。在上面的课上你有

  • 建造师
  • 阶级集团
  • 静止块
  • 还有一个名为
    go()

  • 告诉我第10行中的“静态”是否连接到go() 方法

    这与go方法无关。它被称为静态初始化块

    为什么输出是x y c g

    public class testclass {
    
        testclass() {
            System.out.print("c ");
        }
    
        { 
            System.out.print("y ");
        } 
    
        public static void main(String[] args) { 
            new testclass().go(); 
        } 
    
        void go() {
            System.out.print("g ");
        } 
    
        static {
            System.out.print("x ");
        }
    
    } 
    
    以下是java中的执行顺序

  • 在类加载时,将执行静态字段/初始化块
  • 在对象创建时,JVM将字段设置为默认初始值(0、false、null)
  • 调用对象的构造函数(但不要执行构造函数的主体)
  • 调用超类的构造函数
  • 使用初始值设定项和初始化块初始化字段
  • 执行构造函数的主体

  • static
    块加载类时将运行一个静态初始化块


    静态块将在类加载时首先初始化。这就是为什么你得到的o/p为

    x as the first output
    

    它是静态初始化块。因此,当您创建该类的对象时,它会在构造函数之前首先运行静态初始化块

    static { System.out.print("x "); }
    
    这是静态初始化程序块。这将在类加载时调用。于是第一个电话

    { System.out.print("y "); } 
    
    这是非静态初始化程序块。创建对象后,将首先调用

    testclass() { System.out.print("c "); }
    
    这是一个构造函数。将在对象创建过程中,在执行所有初始值设定项块后执行

    最后,

      void go() { System.out.print("g "); } 
    
    正常方法调用。最后要执行的事情


    有关更多详细信息,请参阅

    可能的重复:
    静态{}
    添加到类的静态初始化中。初始化类时,它会从上到下执行。啊。。这就解释了为什么x是第一个被打印的。。谢谢你,static{…}是类的初始值设定项,当类第一次加载到JVM中时会调用它。它总是在您可以访问代码中其他地方的类型之前执行。此和的绝对副本应标记为重复此和的绝对副本应标记为重复