• ベストアンサー

javaの基本的な質問

下記を実行すると、上から順番にメソッドが実行され、 「Hello Java  Hello Java」 と表示されるような気がしてしまうのですが… なぜ、一度しか表示されないのでしょうか。 class Main { public static void main(String[] args) { hello(); } public static void hello() { System.out.println("Hello Java"); } }

質問者が選んだベストアンサー

  • ベストアンサー
  • bunjii
  • ベストアンサー率43% (3589/8249)
回答No.2

>なぜ、一度しか表示されないのでしょうか。 class Main { } の中に幾つものプログラムを記述できますが実行するのは public static void main の中身だけです。 従って、サブプログラムのhello();を1回だけ実行することが記述されていますので"Hello Java"をコンソールへ1回だけ出力します。 サブプログラムはメインプログラムから呼び出せる所であれば何処に有っても実行されますが単独でサブプログラムが実行されることはありません。

noname#242798
質問者

お礼

ありがとうございます。

その他の回答 (1)

  • asciiz
  • ベストアンサー率70% (6803/9674)
回答No.1

>下記を実行すると、上から順番にメソッドが実行され、 プログラムは、書かれているものすべてが実行されるのではありません。 実際に呼び出されたものだけが、動作します。 Javaプログラムを実行したとき、最初に呼び出されるのは、そのクラスの main() メソッドです。 ご質問のプログラムでいうと、Main.main() が一度だけ呼び出され、main()の中で hello() が呼び出されるので、"Hello Java" は一度のみ表示されます。 -- プログラムに書いてあっても、呼び出さなければ、実行されません。 例えば、 class Main { public static void hello() {System.out.println("Hello Java");} public static void hello2() {System.out.println("Hello Java 2");} public static void hello3() {System.out.println("Hello Java 3");} public static void main(String[] args) { hello2(); } } こんな風に上下を入れ違えて書いても、呼び出されるのは Main.main() です。 そしてmain()の中では hello2() だけを呼び出しているので、表示されるのは "Hello Java 2" の一行だけとなります。