文系出身者が30代からJavaのBufferedReaderクラスを理解しようと四苦八苦
昔、Javaを勉強しようと頑張っていた時期があった。
その時、
初心者がjava.ioパッケージにあるBufferedReaderクラスを使いたい時、インポート文を「import java.io.*;」ではなく「import java.io.BufferedReader;」と書く方がいい
みたいなメモが残ってた。
たぶんあれだ
「import java.io.*;」っていう文は、万能なんだけど、どのクラスライブラリを使ってるのか、判らなくなるからみたいだ。
これだと、ライブラリからどんなクラスを引っ張ってきてるのか、覚えないんだよな。
だから1個ずつ、「import java.io.BufferedReader;」とか書いてたら。
BufferedReaderクラス以外にも、何のクラス使ってるのかとか、不足してるクラスだとかが、判ったりする。
誰かが書いたプログラムを参考に書き換えたりする場合。
試してみたら、Eclipseで「InputStreamReader」がある行で、エラーが出ていた。
InputStreamReaderクラスを利用するための、インポート文が入ってないからみたいだった。
ただ、自分はそもそも「InputStreamReader」クラスが、何のために使ってるのかよく判っていなかった…。
Javaで簡単に文字コードを自動判別するライブラリ!文字化けさせずにファイルインポートでバイト情報に変換する方法! | 自作PCテクニカルセンター
で、出てきたりするけど。
そんで「IOException」の行でもエラーが出てたから「import java.io.IOException;」って入れて、対応したが。
IOExceptionクラスって何…
ネットで調べたら「メソッドが例外IOExceptionを送出(throw)する可能性がある」と説明してくれている。
それでも、IOExceptionクラスは、よく判っていない…。
希望するプログラムが、Eclipse上で動かないトラブルもあった。
その時は、
Eclipseでアクティブでないプログラムが実行されるときの対処法 | TECH Projin
Eclipse – 選択したクラスから実行できない|teratail
とか読んで参考にしたりしてたけど、解決したかどうかは覚えていない。
アクティブなタブにあるプログラムを実行してほしいのに、全然関係ないタブのプログラムを実行されてるする挙動をされたりしていた。
全然関係ないタブ、という自分の認識が違っているかもしれないが・・・。
どうやら、アクティブになってるタブのプログラムがエラーで実行できないから、とりあえず前にうまくいったプログラムを実行しているのは確認したことはある。
そうじゃなくて、エラーのままでも稼働して、どこがエラーなのかアナウンスしてくれたらいいのにな。
「前回うまくいったプログラムを代わりに実行する、っていうのは必要なのか?
あとJavaでよく見かける、
String[] args
は文字列の配列で変数名argsを引数に持つ、ということ。(Java学習ノート_140707(mainメソッド、入力プログラム) – Qiita)
ってのは、勉強になった。
“[]”が配列ってのは何となく把握してたが、argsって変数か~。なんて。
でもargsに代入する値とかって、定義されてなくないか?
変数は使う前に、宣言みたいな文があるだろ。
VBAにはあった。
それなのになんで変数と言えるんだ…省略されてるのか…あー、argsはまだ謎だな。
なんてごちゃごちゃ、半日ぐらいコードと睨めっこしてた。
やっぱりプログラミングは難しいな。