• ベストアンサー

voidとかstaticとか

javaでpublic static void main(String[ ] args) {とかあるんですが よく意味が分かりません 解説のHPを見てもフォーマットなど専門用語を使って説明してるので意味が分かりません System.out.print("hello");は ("")なかが出力するのはわかるんですが 何故 System.outなのか気になります public static void main(String[ ] args) {もよくわかりません 詳しく 凄くわかりやすく説明してくれる人いたら教えて下さい モヤモヤ度MAXです

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

  • ベストアンサー
  • Oh-Orange
  • ベストアンサー率63% (854/1345)
回答No.1

★『Java』は専門外ですがアドバイスします。 ・アドバイスは『static』と『void』の2つです。 ・まず『static』ですが、これは他のソースファイルでは『main』関数は参照・呼び出し  できないようにするためです。つまり、記述したソースファイルでしか利用しない関数  または、他のソースファイルから呼び出せない関数に付けます。→記述したソースの  専用関数って事ですね。 ・そして『void』の方は、関数には『戻り値がありません』と明示的に表すための指示です。  この『void』がある関数を呼び出して、何かの変数に戻り値を代入しようとすると、  関数の使い方が間違っているのでエラーが出ます。→当然ですね。戻り値はないと『void』  をつけているのですから。 ・また、『void』がある関数に『return 値;』などを記述するとやっぱりエラーが出ます。  これも、明示的に戻り値はないと『void』を付けているのでエラーとなるのです。 ・よって、戻り値がない場合は明示的に『void』キーワードをつける事で関数の使い方を  厳しくチェックしてプログラマーさんに教えてくれるのです。 ・以上。おわり。→『System.out』は『print』が画面などへの出力ですので『out』でいいと思うよ。

その他の回答 (2)

  • MrBan
  • ベストアンサー率53% (331/615)
回答No.3

# No.1さんの補足 JavaのstaticはC++でいうstaticメンバの指定であって、 C/C++のようなリンケージ制限とは直接関係ありません。 # C++でもその用途はstaticではなく無名namespaceがいいかも知れませんが。

  • sakusaker7
  • ベストアンサー率62% (800/1280)
回答No.2

皆目見当も付かないほどわからないという状態ですか? どこまで細かく説明すればいいのかわかりませんがとりあえず > System.out.print("hello");は ("")なかが出力するのはわかるんですが > 何故 System.outなのか気になります printの頭になんでこんなものがくっついてるのかわからない。ということでいいですか? これは、色々なメソッド(関数)をディレクトリのような木構造に分類して管理していて、 その所属するところを明確にして書いているからです。つまり、ここで使っている printは、System という大グループの out という小グループの中にあるよ ということです。 今回は最終的なメソッドまでで三段しかありませんが、もっと深くなることもあります。 > public static void main(String[ ] args) {もよくわかりません これを分解すると public ← メソッドの属性 static ← メソッドの属性 void ← メソッドが返す値の型(voidは何も返さないという意味) main ← メソッドの名前 String[] ← メソッドの引数の型 args ← メソッドの引数の名前 です。 public はクラスの外からでも見ることを許可するという属性です。 staticですが、#1の方の説明はJavaのものとしては間違っています。 Javaで、メソッドに対してstaticをつけた場合、そのメソッドは クラスを生成しなくても呼び出すことができるようになります。 Javaは基本的にクラスのインスタンを生成して、インスタンス経由でメソッドを呼び出すのですが、 そうすると、全てのプログラムの起点となるmain()のようなメソッドを 作ることができなくなります。staticという属性をつけることで、 プログラムを起動したときにmain()を含むクラスのインスタンスを生成しなくても main()を呼び出せるということになります。 String[] はmain()はそういう引数の方をとるというお約束になっていますので、そうなっています。 具体的には String の配列ですね(そのまんま)。 クラスとかインスタンスとか使っちゃいましたが余計わからなくなったかな? 使わないで説明すると字数制限を突破しそうだったので御勘弁を。 補足要求してもらえれば別途説明はします。

関連するQ&A