昔やっていた恥ずかしいコーディング −型変換編−
これは今までで一番アホらしいです。文字列を int 型にするとき、↓こんなことやってました。
String s = "123"; int i = Integer.valueOf(s).intValue();
もちろん↓これでいいわけです。
String s = "123"; int i = Integer.parseInt(s);
次に型変換ではないですが、型に関係するはまりパターン。ていうか、最近はまった。
int i = -1; System.out.println(i >> 1); //(1) System.out.println(i >>> 1); //(2)
(1)と(2)の違いはわかりますか? そうです。(1)は先頭ビットが立ちますが、(2)は立ちません。では↓はどうなるでしょうか?
byte b = -1; System.out.println((byte)(b >> 1)); //(1) System.out.println((byte)(b >>> 1)); //(2)
答えは両方とも先頭ビットが立ちます。なぜならば、シフト演算はintにキャストされてから行われるためです。