这里的static在java中指的是什么
非常生锈,但我很确定我从未见过这样的代码。这是一个来自java联合考试的模拟问题,有人能告诉我第10行中的“static”是否连接到go()方法吗??主要是为什么输出是xycg这里的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
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中的执行顺序
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中时会调用它。它总是在您可以访问代码中其他地方的类型之前执行。此和的绝对副本应标记为重复此和的绝对副本应标记为重复