javaでpublic static void main(String[ ] args) {とかあるんですが
よく意味が分かりません 解説のHPを見てもフォーマットなど専門用語を使って説明してるので意味が分かりません
System.out.print("hello");は ("")なかが出力するのはわかるんですが
何故 System.outなのか気になります
public static void main(String[ ] args) {もよくわかりません
詳しく 凄くわかりやすく説明してくれる人いたら教えて下さい
モヤモヤ度MAXです
No.1ベストアンサー
- 回答日時:
★『Java』は専門外ですがアドバイスします。
・アドバイスは『static』と『void』の2つです。
・まず『static』ですが、これは他のソースファイルでは『main』関数は参照・呼び出し
できないようにするためです。つまり、記述したソースファイルでしか利用しない関数
または、他のソースファイルから呼び出せない関数に付けます。→記述したソースの
専用関数って事ですね。
・そして『void』の方は、関数には『戻り値がありません』と明示的に表すための指示です。
この『void』がある関数を呼び出して、何かの変数に戻り値を代入しようとすると、
関数の使い方が間違っているのでエラーが出ます。→当然ですね。戻り値はないと『void』
をつけているのですから。
・また、『void』がある関数に『return 値;』などを記述するとやっぱりエラーが出ます。
これも、明示的に戻り値はないと『void』を付けているのでエラーとなるのです。
・よって、戻り値がない場合は明示的に『void』キーワードをつける事で関数の使い方を
厳しくチェックしてプログラマーさんに教えてくれるのです。
・以上。おわり。→『System.out』は『print』が画面などへの出力ですので『out』でいいと思うよ。
No.3
- 回答日時:
# No.1さんの補足
JavaのstaticはC++でいうstaticメンバの指定であって、
C/C++のようなリンケージ制限とは直接関係ありません。
# C++でもその用途はstaticではなく無名namespaceがいいかも知れませんが。
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が見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Java Java プログラム public class Main { public static void 3 2023/08/10 23:46
- Java java 入力 3 4 3 出力 ABC DEFG HIJ このようなプログラムの書き方を教えてくだ 2 2022/07/15 14:18
- Java java final 1 2022/06/10 22:49
- Java 直し方について教えて頂きたいです。 4 2022/08/13 02:11
- Java eclipse実行ができない 2 2022/07/27 04:47
- Ruby 【JAVA】数字をひし形に出力するプログラムについて 2 2022/07/11 23:32
- Java javaでのプログラム(配列)について質問です. 2 2022/10/14 22:27
- C言語・C++・C# 大量のデータを読み込んで表示する速度を改善したい 8 2023/05/07 13:29
- C言語・C++・C# C# DatagridviewにExcelシートを反映するとエラーが出る 2 2023/05/06 17:12
- C言語・C++・C# Windows Formアプリからコンソールを呼び出して文字を出力させたい 8 2023/05/09 10:53
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
レコード件数の表示
-
Strutsでチェックボックスの値...
-
abstract と static を一緒に付...
-
Google Apps Script で getRang...
-
public static void main (Stri...
-
なぜprotected overrideなのか
-
String.containsの反対機能はあ...
-
別クラスのmainメソッドの実行
-
Jakarta POI での、excelのシ...
-
Java初級 引数に適用できません
-
親の親のメソッドを呼ぶには?
-
VB.Net: クラスの共有メソッド...
-
C# でメソッドに送られてきたOb...
-
JDBC Connectionを開放し続ける...
-
不要なstaticメソッドの見分け...
-
JUnitのテストメソッドごとのメ...
-
メソッド/ルーチン
-
メソッド宣言の戻り値の型にク...
-
メソッドにより複数の情報を得...
-
C# 点の描き方をおしえてくだ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Java初級 引数に適用できません
-
abstract と static を一緒に付...
-
なぜprotected overrideなのか
-
C# 点の描き方をおしえてくだ...
-
レコード件数の表示
-
String.containsの反対機能はあ...
-
Google Apps Script で getRang...
-
StringBufferからStringへキャ...
-
public static void main (Stri...
-
YYYYMMDD書式の日付に対する適...
-
クラスを作るとメソッドの数が...
-
C# でメソッドに送られてきたOb...
-
C# の ByVal と ByRef について
-
Fileの読み取り専用の解除
-
メソッド宣言の戻り値の型にク...
-
Strutsでチェックボックスの値...
-
メソッドの引数に指定されてい...
-
別クラスのmainメソッドの実行
-
contextってなんですか?
-
javaに"search"という関数 or ...
おすすめ情報