2011年8月3日水曜日

第1回 Java7はここが違う!

前回<>次回

登場人物
  • NRT
    猪突猛進なプログラマー
    考える前に体力勝負でプログラミングするタイプ。
    たまに鋭い洞察力を見せるため、
    周囲からは落ち着いてさえいれば…と言われている。

  • SSK
    冷静沈着なプログラマー
    20:80の法則に習い、実は仕事の一部分を学習に当てている。
    他の人はそれに気がついていない。
    Java7についても以前からチェックはしていた。

  • SKR
    紅一点なプログラマー
    暗算は早いけど、プログラミングはそこそこ。
※登場人物は忍者ではありません。架空のプログラマーです。

新機能:Binary Literals

SSK「NRT、これがいくつだかわかるか?」

(Javaのソースを見せる)

0x1234

NRT「ん、1,234だろ?それがどうかしたかのかよ?」

SSK「(ため息)…こんなやつが同じチームだとはな。」

NRT「な、なにを~!」

SSK「よく見ろ、頭に“0x”が付いてるだろ。」

NRT「それが?」

SSK「………この場合16進数表記になるんだよ。ほら…(エンターキーを押す)」

System.out.println(0x1234);
結果:4660

NRT「何だと~!?え~と、二桁目が16×3だから、え~と、え~と…」

SSK「SKRは10秒くらいで答えていたぞ。」

NRT「さっすがSKRちゃんは優秀だってばよ!」

SSK「お前も見習え…で、次はこれだ。…別に10進数で答えなくていいからな。」

0x1234 & 0x4321

NRT「今度は間違えない!ビット演算だなぁ~………で、あれがこれで、それが~あ~だから…」

SSK「もういい、今日の話はここだ。」

NRT「どういうことだってばよ?SSK!?」

SSK「Java SE 7からは2進数が書けるようになったってことだ。
       “0b”もしくは“0B”を頭につけた数は、2進数として扱われる。
       つまり、さっきのはこう書き換えられる。」

0b0001001000110100 & 0b0100001100100001

SSK「改行を入れるとさらに分かりやすくなる。」

   0b0001001000110100 
 & 0b0100001100100001

NRT「これなら簡単だってばよ!つまり、答えはこうなる!!」

   0b0001001000110100 
 & 0b0100001100100001
// 0b0000001000100000 ←これが答え
結果:544

SSK「どうやら気が付いたようだな。
       このように2進数表記で書くと、読みやすくなる部分は多い。
       NRTでも簡単に読めるようになるってわけだ。」

NRT「ぐっ…くやしいけどその通りだ…!
       でも、何で今まで無かったんだってばよ?」

SSK「………そういえばそうだな。
       難しくはないはずなんだが…」


2 件のコメント:

  1. > 結果:4460
    0x1234は4660ですね。

    返信削除
  2. コメントありがとうございます。
    冗談抜きで助かりました…
    ケアレスミスを一般公開し続けるところでした…

    実際にコードは打ったはずなので、
    打ち間違い…だと信じたいです。

    返信削除