java:暗黙の型変換による意図しない小数点以下切り捨て

原因がわかるまでに手間取ってしまったので、記事として残しておきます。
double型やBigDecimal型の変数の初期値を分数(例:2/3)で定義する際、小数点を入れないと「int型変数/int型変数」と判断されてしまい、小数点以下が切り捨てられた状態で変数に格納されてしまいます。
「2.0/3.0」なら可なのですが、「2/3」は不可です。

以下、サンプルコードです。

【失敗例】

・ソースコード

・実行結果

【成功例】

・ソースコード

・実行結果

java:javaからのOSコマンド呼び出しと注意点

javaのプログラムからOSのコマンドを実行したい場合は、Runtimeクラスのexecメソッドで実現できます。
 
しかし、OSのコマンドは別プロセスで立ち上がるので注意が必要です。
ProcessクラスのwaitForメソッドでプロセスの終了を待たないと、処理が前後してしまい意図しない挙動となることがあります。
また、destroyメソッドでプロセスを明確に終了させ、資源を回収することも重要です。
 
以下は、プロセスの終了を待たないと意図しない挙動となることを確認するためのテストコードです。
javaのプログラムでは、OSのコマンドを使用して、3秒のスリープ後に hoge.txt を aフォルダ から bフォルダ へ移動させています。
waitForメソッドを使用しなかった場合、javaのプログラムが終了した時点で hoge.txt の bフォルダ への移動が完了していない(javaのプログラムが立ちあげたプロセスが終了していない)ことを確認できます。
逆に、waitForメソッドを使用した場合は、javaのプログラムが終了した時点で hoge.txt の bフォルダ への移動が完了している(javaのプログラムが立ちあげたプロセスが終了している)ことを確認できます。
 

【テストコード】

・RuntimeTest.java

【実行用バッチ】

・RuntimeTest.bat

【「p.waitFor();」と「p.destroy();」をコメントアウトした場合の実行結果】

【「p.waitFor();」と「p.destroy();」を有効にした場合の実行結果】

java:色々なfor文の書き方

新人にfor文を教えるために書いたコードです。
5通りの書き方をしており、全て同じ挙動を示します。
これらの書き方を使い分けることで、様々なループ条件を記述できます。

【サンプルコード】

【実行結果】

java:thisで指定されたメンバ変数が自クラスにない場合、スーパークラスを参照しにいくことの確認

実務を行う中で気になることがあったので、調査しました。
javaでは「thisで指定されたメンバ変数が自クラスにない場合、スーパークラスを参照しにいく」という挙動になると聞いたので試してみたのですが、確かにそうなりました。
試した結果は以下です。

【テストコード】

・Main.java

・ThisClass.java

・SpecializeClass.java

【実行結果】