No.1ベストアンサー
- 回答日時:
>main()がクラスTest_A の中に挟まっているのでしょうか
Javaは、全てのプロパティ、メソッドはどこかのクラスに属していないといけないからです。
mainメソッドであっても例外ではありません。
>main()からプログラムが始まるのは分かるのですが、その後の動作が分かりません。
これを考える上で最も重要なのはmainメソッドがstaticであることです。
staticなメソッドは、そのクラスのインスタンスを作らなくても、
つまり、new Test_A();としなくても実行することが可能です。
プログラム実行時には、Test_Aクラスのインスタンスは生成されません。
質問のコードでは変数a,bに値が代入され、それで終わりです。
Javaでは、(正確にはJavaVMは)実行するclassファイルにある、
String[]引数を持ったvoid mainメソッドを実行する仕様になっています。
しかし、mainメソッドを実行するときには何のインスタンスも生成されていないので、
何かのインスタンスのメソッドを実行することはできません。
なので、staticなメソッドでないとJavaVMが実行できないのです。
さらに、JavaVMからアクセス可能なスコープを与える必要があるので、
publicである必要もあるのです。
あとは、そのmainメソッドに指定されたコードを実行し、mainメソッドの最後まで処理が進んだら
そこでJavaVMが終了し、プログラムも終了します。
※細かい話ですが、main()からプログラムは始まりません。
正確に言うと、引数なしのmain()メソッドは他のメソッドと何ら代わりがありません。
プログラムを始めるには、
アクセススコープがpublicで、staticな戻り値のなく、引数にString配列を取るmainメソッド
であることが必要です。つまり、
public static void main(String[] args)
とするのが通常です。
試しに質問のコードをjavaコマンドで実行すると、NoClassDefFoundErrorが出るはずです。
No.2
- 回答日時:
Javaは、マルチスレッドのプログラムです。
実行開始時点ではスレッドは1本で、メソッドmainを実行します。
スレッドの実行の途中で、別のスレッドを生成することが可能です。
この場合、スレッドの本数が2本以上となります。
ここでメソッドmainを終了したら、最初のスレッドがなくなります。
スレッドの本数は1本少なくなりますが、まだ1本以上あればプログラムは終了ません。
参考URL:http://www.itarchitect.jp/technology_and_program …
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・14歳の自分に衝撃の事実を告げてください
- ・架空の映画のネタバレレビュー
- ・「お昼の放送」の思い出
- ・昨日見た夢を教えて下さい
- ・ちょっと先の未来クイズ第4問
- ・【大喜利】【投稿~10/21(月)】買ったばかりの自転車を分解してひと言
- ・メモのコツを教えてください!
- ・CDの保有枚数を教えてください
- ・ホテルを選ぶとき、これだけは譲れない条件TOP3は?
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・【コナン30周年】嘘でしょ!?と思った○○周年を教えて【ハルヒ20周年】
- ・ハマっている「お菓子」を教えて!
- ・最近、いつ泣きましたか?
- ・夏が終わったと感じる瞬間って、どんな時?
- ・10秒目をつむったら…
- ・人生のプチ美学を教えてください!!
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・都道府県穴埋めゲーム
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルVBAで、条件に一致する...
-
onClickで関数呼出し後に、結果...
-
JSPで<SELECT>の中にDBから持っ...
-
(String args[])というメッソ...
-
コマンドプロンプト実行後に画...
-
Excel VBA でExcelを終了したい...
-
final修飾子を使っているのに、...
-
javascriptからjavaを呼び出したい
-
エクセルVBAにおけるON TIMEメ...
-
DataGridViewでセルクリックイ...
-
VBA コピーが出来ません…!
-
ウィンドウを最前面にできません
-
マスターページからコンテンツ...
-
引数は省略できません。とのコ...
-
VBPをダブルクリックするとたま...
-
Labelコントロールに数字を代入...
-
VBScriptからストアドプロシー...
-
CALLされていないメソッドを見...
-
C#SundPlayerで同期再生が再生...
-
エクセルのマクロでプリンタを...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルVBAで、条件に一致する...
-
コマンドプロンプト実行後に画...
-
DataGridViewでセルクリックイ...
-
Labelコントロールに数字を代入...
-
エクセルVBAにおけるON TIMEメ...
-
javascriptからjavaを呼び出したい
-
mainメソッドのthrows節で設定...
-
Refreshメソッドの使い方
-
配列のメソッド
-
VBPをダブルクリックするとたま...
-
final修飾子を使っているのに、...
-
ウィンドウを最前面にできません
-
JSPで<SELECT>の中にDBから持っ...
-
【sendkeysメソッドが動かずに...
-
Excel VBA でExcelを終了したい...
-
VB.netで、シリアル通信のタイ...
-
Application.Wait の参照設定
-
Excel VBA シェイプの原型のサ...
-
onClickで関数呼出し後に、結果...
-
drawStringで文字間隔の調整
おすすめ情報