这里的静态在java中指的是啥
Posted
技术标签:
【中文标题】这里的静态在java中指的是啥【英文标题】:what does static here refer to in java这里的静态在java中指的是什么 【发布时间】:2014-06-15 02:29:02 【问题描述】:相当生锈,但我很确定我从未见过这样写的代码。这是一个来自 java 助理考试的模拟问题,有人可以告诉我第 10 行中的“静态”是否连接到 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 ");
【问题讨论】:
可能重复:***.com/questions/2943556/static-block-in-javastatic
被添加到类的静态初始化中。类初始化时从上到下执行。
啊..这解释了为什么首先要打印 x .. 谢谢你们
static ...
是类初始化器,当类第一次加载到 JVM 时调用。它总是在您可以访问代码中其他地方的类型之前执行。
此question 的绝对副本,应标记为重复
【参考方案1】:
告诉我第 10 行中的“静态”是否连接到 go() 方法??
这与 go 方法无关。它被称为静态初始化块。
为什么输出是 x y c g ???
以下是java中的执行顺序
-
在类加载时,将执行静态字段/初始化块。
在对象创建时,JVM 将字段设置为默认初始值(0、false、null)
调用对象的构造函数(但不要执行构造函数的主体)
调用超类的构造函数
使用初始化器和初始化块初始化字段
执行构造函数的主体
【讨论】:
此question 的绝对副本,应标记为重复【参考方案2】:static
块中有一个静态初始化块,将在加载类时运行。
http://docs.oracle.com/javase/tutorial/java/javaOO/initial.html
【讨论】:
【参考方案3】:这是缩进不佳的代码。在上面的课程中,您有
-
构造函数
类块
静态块
还有一个叫做
go()
的方法
class testclass
/**
* Constructor, which gets called for every new instance, after instance block
*/
testclass()
System.out.print("c ");
/**
* This is instance block which gets called for every new instance of the class
*
*/
System.out.print("y ");
public static void main(String[] args)
new testclass().go();
/**
* any method
*/
void go()
System.out.print("g ");
/**
* This is static block which is executed when the class gets loaded
* for the first time
*/
static
System.out.print("x ");
【讨论】:
【参考方案4】:static System.out.print("x ");
这是静态初始化块。这将在类加载时调用。因此第一次调用。
System.out.print("y ");
这是非静态初始化块。一旦对象被创建,就会被调用。
testclass() System.out.print("c ");
这是构造函数。将在对象创建过程中执行,在所有初始化块执行完毕后。
最后,
void go() System.out.print("g ");
普通方法调用。最后要执行的事情。
更多详情请参考http://docs.oracle.com/javase/specs/jls/se7/html/jls-12.html
【讨论】:
【参考方案5】:静态块将在类加载时首先被初始化。这就是你得到 o/p 的原因
x as the first output
【讨论】:
【参考方案6】:它是静态初始化块。因此,当您创建该类的对象时,它首先运行静态初始化块,甚至在构造函数之前。
【讨论】:
以上是关于这里的静态在java中指的是啥的主要内容,如果未能解决你的问题,请参考以下文章
AddressFamily.FireFox 在 .NET 套接字中指的是啥?