我々は、我々が作成したい場合ことを知っているようobject
にclass
何かをする我々の必要性を:
class MyClass{
// ...
}
そして、そのを作成するために、object
我々は実行します。
MyClass MyObj = new MyClass();
今、私たちはJavaでプログラムを作成したい場合は、私たちは持っている必要がありmain
内部メソッドをclass
、それはclass
ファイル名と同じ名前を持つ必要があります。
例えば:
// file MyFile.java
public class MyFile{
public static void main(String[] args){
// ...
}
}
今の質問はの対象かどうかということであるMyFile
クラスもによって内部的に作成されますjava
呼び出すことにより、Javaファイルの実行を開始するために、ときに、このプログラムの実行main
方法をかそれが呼び出したん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
このような状況で内部的に?
JVMの起動時にクラスのインスタンスは自動的に作成されません。main
この方法は、単に静的に呼び出される-それは最初の場所で静的である必要があります理由です。
クラスがされて初期化されますが、静的初期化子、持っているそうだとすれば、前に実行されるメソッドが、クラスのインスタンスを構築しませんが。そこそうする必要はないのです、それは不必要な合併症をご紹介します。(あなたが唯一たとえば、パラメータを持つコンストラクタが含まれている場合に起こるために何を期待します?)main
JVMの起動の詳細については、Java言語仕様の第12章を。