昔のソースコードのリファクタリングでJava 15年間の歴史(Java 1.3~Java 8)を一気に把握!

まえがき Java 1.0が発表されたのが1996年1月だそうで、かれこれ20年近く経っています。その間に次のようなバージョンの遷移を経て今に至ります。 Java 1.0(1996年1月23日) Java 1.1(1997年2月19日) Java 1.2(1998年12月8日) Java 1.3(2000年5月8日) …

続きを読む≫

ジッとしてくれないJava VM

より速くてよりカッコいいfor文の書き方の後日談です。 前回の記事で、ソースコードをそのまま実行しても意図した処理時間にならないだろう、と書きました。では、意図した結果を得るにはどうすればいいのでしょうか。もったいぶってもしょうがないので答えを明かすと、ソースコード実行時にVMの引数に「-Djava.compiler= …

続きを読む≫

より速くてよりカッコいいfor文の書き方

for文の書き方について、何も疑問に思わずに次のように書いていませんか? 果たしてこれは最適な書き方でしょうか? for文の意味は次の通りです。 for(int i=0 /* 最初だけ処理する */; i<list.size() /* 毎回判定する */; i++ /* 毎回処理する */) よく見ると、毎回判定 …

続きを読む≫

JavaのCollectionに関する備忘録

身近にあって、あまり深く考えずに使ってしまっているCollection系のクラス。 案外、「ArrayListだけしか使っていない、それ以外は知らない」という人も多いような気もします。 Setなんて、知名度がかなり低い気もします。でも実は、Setを使うべきシーンは多い気もします。 斯く言う私も怪しいので、ここにまとめて …

続きを読む≫

Map型のインスタンス変数やクラス変数に”格好良く”初期値を与える方法(2)

前回の続きです。 ネットで色々と探していると、次の二つの方法が見つかりました。 上は[JAVA MAP LITERALS, CONTINUED]、下は[Java の Map の初期化がダサいのでどうにかしたい]で紹介されているやり方です。この記事には呼び出し元のソースコードしか載せませんので、呼び出し先の実装に興味のあ …

続きを読む≫

Map型のインスタンス変数やクラス変数に”格好良く”初期値を与える方法(1)

次のようなクラスがあるとします。 もし、インスタンス変数instanceMapやクラス変数staticMapに”格好良く”初期値を与えたいとします。 さて、どうしましょう。 こういう方法があります。 一目見ただけだと何をやっているかわかりませんね。何をやっているかわからないあたりが、秘密の組織っ …

続きを読む≫

世にも奇妙なJava言語クイズ

問題です。以下で示すプログラムを実行すると、どうなるでしょう? 答えは例外が発生し、コンソールにはスタックトレースが表示されます。 ・・・まあ、当たり前ですね。 では次の場合は? 先ほどのソースとの違いは、こちらはfinally句でreturnしています。 実行すると・・・ れ、例外が消えた!? 今日の教訓その1 fi …

続きを読む≫