
下のプログラミングについていくつか質問があります。
(1)
プログラムの冒頭に来るpublic static void main(String[] args)を今まで気にしていなかったのですが
これはどういうことですか?これもメソッドのひとつなんですか?このプログラムではpublic static void main(String[] args)でメソッドを定義してそれをetest( )メソッドで開いているという感じでしょうか?
それとetstってどこから来たのかわかります?作者が勝手につけた名前だそうですが。
(2)FileReader fr = new FileReader("xfile.txt"); のところがわかりません。これはどういう意味ですか?
public static void main(String[] args) {
public static void etst( ) {
try { // try節を書く
FileReader fr = new FileReader("xfile.txt");
}
catch (FileNotFoundException e) { // FileReader( )対応catch節
System.out.println("例外1: " + e); // 例外情報を表示
return; // 戻る
}
catch (IOException e) { // Close( )対応catch節
System.out.println("例外2: " + e); // 例外情報を表示
return; // 戻る
}
System.out.println("ファイルは正しくオープンされました");
}
}
}
よろしくお願いします!!
No.5ベストアンサー
- 回答日時:
追加の質問を頂いていたのですね。
> 「mainからetestなどのメソッドを呼び出し、メソッドはmainの外で定義するというのが正しいです。」と
> ありますがこれはどういうことなのでしょうか?mainからetestなどのメソッドを呼び出すということは
> mainにetestのメソッドが入っているということですか?
質問者さんの用語法が一般的なJavaプログラマの用語法と違うようなので、ご質問の正確な意味をつかみずらい
のですが、多分逆だろうと思います。質問文中のプログラムではmainの後の{}の「中に」etstが記述されて
いますよね。("{}"で囲まれた一まとまりをブロックと言います。)Javaではこういう書き方はしないのです。
No.1の回答に書いたように、mainのブロックとetestのブロックとは独立しています。処理の内容としては、
mainの処理の一部分としてetestの処理を行うことになります。
> インスタンスってなんでしょうか?
これもJava(というかオブジェクト指向)の基本中の基本なのですが、クラス(型)を実体化したものが
インスタンスです。クラスが設計図、インスタンスは設計図を基に作られた製品と思ったらよいです。
ご質問のケースでは、一般的にファイルを読む道具としてFileReaderクラスが定義されていて、
それを基に、"xfile.txt"というファイルを読む具体的なFileReaderを作成しています。
お返事ありがとうございました。
>質問者さんの用語法が一般的なJavaプログラマの用語法>と違うようなので、ご質問の正確な意味をつかみずらい
すみません、よく理解しないで自分勝手に使ってました・・・。混同させてしまってすみません。
回答の方は大変わかりやすく理解しやすかったです。
ありがとうございました。
No.6
- 回答日時:
> 「mainからetestなどのメソッドを呼び出し、メソッドはmainの外で定義するというのが正しいです。
」と> ありますがこれはどういうことなのでしょうか?mainからetestなどのメソッドを呼び出すということは
> mainにetestのメソッドが入っているということですか?
メソッドの呼び出しとメソッドの定義がごちゃごちゃになっていますね。
public void xxx(){
}
とか書いてあるのはメソッドの定義です。
あるメソッドの中でxxx()とか書いてあるのは
メソッドの呼び出しです。
あるメソッドの中で他のメソッドを定義することはできません。
なるほどそういうことだったのですね!!
もう混乱しまくっててJAVAを諦めようかと思っていたほどでした・・・。すいませんわかってみればなるほどですね。
No.4
- 回答日時:
#2です。
省略と記述したのは、etstメソッドの処理内容です。
つまり、
-------------------------
try { // try節を書く
FileReader fr = new FileReader("xfile.txt");
}
catch (FileNotFoundException e) { // FileReader( )対応catch節
System.out.println("例外1: " + e); // 例外情報を表示
return; // 戻る
-------------------------
の部分です。
No.3
- 回答日時:
・上記のソースではコンパイルエラー出ます。
・質問の内容とタイトルが一致しません。この質問は例外処理の質問ではありません。
(1)C言語でいうところのmain関数です。あなたが他にどんな言語を知っているかわからないのでとりあえずC言語で例えてみました。
(2)"xfile.txt"をコンストラクタの引数にしてFileReaderのインスタンスを生成し、frに格納しています。ファイルを開く操作、と言った方がわかりやすいでしょうか。
<蛇足>
質問内容からは、まったくJavaに触ったことの無い人なのかな、という印象を受けました。上記のソースはそのままではコンパイルエラーが出るのでそれでは勉強になりません。本屋さんで別のJava入門書を買うことをお勧めします。その際、間違ってJavaScriptの入門書を買わないよう注意してください。本屋さんによってはJavaの本とJavaScriptの本が混ざって売っているところがあるので。
今後のアドバイスとして。どうしたら動くかではなくどうしたら動かなくなるのかを知ってほしいところです。
すいませんおっしゃるとおり例外処理の質問ではないですね・・・。前の質問と混同してしまいました。
わかりやすい回答をありがとうございます。
えぇおっしゃるとおりJAVAにさわったことはありません。まだ本だけで勉強している状態で知識が絶対的に不足しているのを実感している次第でございます。いちおう今もっているのがJAVA入門書用の本なのでこれで勉強していこうと思います。
お礼が送れて申し訳ありません。
ありがとうございました。
No.2
- 回答日時:
まず、いくつか間違いがあるようですので、訂正をしておきます。
1.プログラムの冒頭に、public static void main(String[] args)がくることはありません。
2.public static void main(String[] args)の記述が違います。
正しくは、
---------------------------
public class ExceptionTest
{
public static void main(String[] args){
etst();
}
public static void etst(){
省略
}
}
という形になります。
(ExceptionTestというのは、私が勝手に付けた名前です)
---------------------------
>これもメソッドのひとつなんですか?
そうです。基本的には、メソッド名は自由に命名できますが、
このメソッドだけはJAVAの言語仕様で決められていて、
実行の開始場所を意味しています。
>それとetstってどこから来たのかわかります?作者が勝手につけた名前だそうですが。
その通りです。メソッドには名前を付けなければなりません。
単にaとかbでも構わないのですが、作者は少し意味のある名前を
付けたかったのだと思います。
お返事どうもありがとうございました。
すいません、
public static void etst(){
省略
のところなんですが省略というのはpublic static voidというのを省略しているということでしょうか?
No.1
- 回答日時:
前回の追加質問ですね。
(1)
まず、mainですが、Javaのプログラムは、一般的にJava Virtual Machine という
特別なプログラム上で動きます。main は、そこから呼び出される特別なメソッドです。
「メソッドのひとつ」というのは合っています。
> このプログラムではpublic static void main(String[] args)でメソッドを定義して
> それをetest( )メソッドで開いているという感じでしょうか?
ということですが、実はJavaではこんなプログラムの書き方はしません。このままでは
コンパイルエラーになります。mainからetestなどのメソッドを呼び出し、メソッドは
mainの外で定義するというのが正しいです。
public void main(String[] args) {
etest(); // これはメソッドの呼び出し
}
// 下はメソッドの定義
void etest() {
// etest() の処理をここに書く
}
(2)
"xfile.txt"というファイルを読むFileReaderのインスタンスを一つ作成すると
いうことです。
こんにちはranxさん。その節はどうもありがとうございました。
(1)に関してなのですが、「mainからetestなどのメソッドを呼び出し、メソッドはmainの外で定義するというのが正しいです。」とありますがこれはどういうことなのでしょうか?mainからetestなどのメソッドを呼び出すということはmainにetestのメソッドが入っているということですか?
あと(2)で出てくるインスタンスってなんでしょうか?
お探しの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 JavaのSingletonパターンのprivateの持つ意味が分かりません。 5 2022/06/12 10:38
- Ruby 【JAVA】数字をひし形に出力するプログラムについて 2 2022/07/11 23:32
- Java javaでのプログラム(配列)について質問です. 2 2022/10/14 22:27
- Java 直し方について教えて頂きたいです。 4 2022/08/13 02:11
- Java java 飾子を付けること(public static・・・) ・コンソールへの出力処理はmainメ 2 2022/06/16 19:34
- C言語・C++・C# 大量のデータを読み込んで表示する速度を改善したい 8 2023/05/07 13:29
- Java eclipse実行ができない 2 2022/07/27 04:47
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルVBAで、条件に一致する...
-
0歳児の指しゃぶりに関して
-
mainメソッドのthrows節で設定...
-
frameとgetメソッド
-
javascriptからjavaを呼び出したい
-
配列のメソッド
-
Eclipse、clone利用時に型の安...
-
VBA コピーが出来ません…!
-
vbaエクセルマクロ RemoveDupli...
-
例外処理についてお願いします!!
-
エクセルVBAにおけるON TIMEメ...
-
final修飾子を使っているのに、...
-
Javaはmainメソッドからじゃな...
-
コマンドプロンプト実行後に画...
-
一般的な引数の順序
-
Exec時のCMD.EXE画面は結局回避...
-
ページングについて
-
アプレット
-
アプリケーション内でのダブル...
-
JAVA言語について
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルVBAで、条件に一致する...
-
【sendkeysメソッドが動かずに...
-
mainメソッドのthrows節で設定...
-
VBA コピーが出来ません…!
-
DataGridViewでセルクリックイ...
-
コマンドプロンプト実行後に画...
-
0歳児の指しゃぶりに関して
-
エクセルVBAにおけるON TIMEメ...
-
javascriptからjavaを呼び出したい
-
配列のメソッド
-
CALLされていないメソッドを見...
-
final修飾子を使っているのに、...
-
Labelコントロールに数字を代入...
-
VBPをダブルクリックするとたま...
-
ウィンドウを最前面にできません
-
処理内容がほぼ同じメソッドの...
-
Application.Wait の参照設定
-
C#.net Define文
-
C# 演算 最大値 最小値 表現の仕方
-
Excel VBA でExcelを終了したい...
おすすめ情報