【发布时间】:2018-12-21 20:06:56
【问题描述】:
我们知道,如果我们想创建 object 的 object,我们需要做一些事情:
class MyClass{
// ...
}
为了创建它的object,我们这样做:
MyClass MyObj = new MyClass();
现在,如果我们想在 java 中创建一个程序,我们需要在 class 中有一个 main 方法,并且 class 应该与文件名同名。
例如:
// file MyFile.java
public class MyFile{
public static void main(String[] args){
// ...
}
}
现在的问题是MyFile类的对象是否也会在程序运行时由java在内部创建,以便通过调用main方法开始执行java文件,还是它调用main 方法静态为:
MyFile.main(String[] args);
如果我将MyFile 中的类设置为:
public class MyFile{
class HelloWorld{
// ...
}
public static void main(String[] args){
// ...
}
}
或具有非静态属性和方法为:
public class MyFile{
int x = 10;
public void MyWorld(){
// ...
}
public static void main(String[] args){
// ...
}
int y = 10;
public void ByeWorld(){
// ...
}
}
等等等等
现在,场景是什么? java 会在内部创建MyFile 类的对象吗?在这种情况下java 将执行哪些操作,以便在main 方法的帮助下运行程序以及在main 方法之前和之后加载其他内容?在这些情况下,java 在内部会执行什么操作?
【问题讨论】:
-
Java 编译器不创建对象,而是创建字节码。 Java runtime 根据需要创建对象
-
方法是
static所以属于class而不是类的实例,因此当类被类加载器加载并且不需要实例时可用。