Archive for 2013年5月9日

Java Puzzlers って何?!サンプル問題の解答

先日、Java Puzzlers のサンプル問題を下記エントリでご紹介しました。

Java Puzzlers って何?!サンプル問題

この問題の解説を行います。
結論から言うと、正解は(3)です。皆様正解できましたか?

一見すると
1行目:12345678 + 87654321 = 99999999
2行目:01_234_567 + 76_543_210 = 77777777

となりそうなので、答え(2)を選んでしまう方もいらっしゃるかもしれません。

もしくは12_345_678のように、 _ (アンダースコア)が付いたリテラルに対して加算しているのでコンパイルエラーになると考え(5)を選ばれる方もいらっしゃるかもしれません。数値の間に _ (アンダースコア)が入る事は Java SE 7(Project Coinで) からできるようになりました。このアンダースコアは、数字データの可読性の向上のために自由に使っていただく事ができます。つまり(5)でもありません。

次に、回答(1)を選んだ方は、2行目の部分は気づいた方ではないでしょうか。2行目の先頭に 0 がついていますが、Java では 8進数表記になります。8進表記で 1234567 は 10 進表記では 342391 になります。つまり、10 進数で計算しなおすと下記のようになります。

342391+76543210=76885601

ここまで分かった場合、残った答えは (1) か (3) にしぼられるのですが、このプログラム実はもう一つ落とし穴があります。

1行目の、87_654_32l と記載されている所ですが、実は最後の文字は1(イチ) ではなく l (long:小文字のエル) なのです。

つまり、12345678 + 8765432 = 21111110 となり答えは (3) となります。Primitive の long 型を扱う場合には、混乱を招かないように l(小文字のエル)ではなく、L(大文字のエル)を使いましょうね!!

と、このようなやりとりをパズラーの登壇者がおもしろおかしく、そして分かりやすく紹介します。

パズラーが出す質問に、皆様何問回答できますか? (^_^)
是非、チャレンジしてみてください。

2013年5月9日 at 1:12 午前


Java Champion & Evangelist

Translate

ご注意

このエントリは個人の見解であり、所属する会社の公式見解ではありません

カレンダー

2013年5月
 12345
6789101112
13141516171819
20212223242526
2728293031  

カテゴリー

Twitter

  • RT @jcon_conference: #JCON2021 Session now on Youtube! Supercharge your Spring Boot Apps: The Path to Production with @mkheck and @sKriemh9 hours ago
  • RT @itakash: 【お知らせ】 Java SE 17の日本語ドキュメントの公開を開始しました。是非ご活用ください。 Java SE 17 日本語ドキュメント docs.oracle.com/javase/jp/17/i… 今回のドキュメントは一部翻訳されていません。[概要]の"READ… 21 hours ago
  • RT @yamadamn: 前も書いた気がするけど、翻訳に対応してくれてるの日本だけなのですよね。(Sun時代は中国語もあったけど、今はなくなった) Javaに関わるものの端くれとして、今でも調整や予算取りなども含めて日本オラクルが対応をしてくれていることに深く感謝したい。 21 hours ago
  • RT @NickZhu9: Say goodbye to those hidden .project and .classpath files in latest VS Code Java release! Case closed for an issue that has b… 1 day ago
  • RT @cero_t: 朝まで起きてないと思うので、Advent Calendar 4日目を公開しました。 データストアに実際どんなデータが保存されているか、というところも説明しています : Dapr Advent Calendar 4日目 - Daprでデータストアにアクセ… 1 day ago

clustermap

ブログ統計情報

  • 1,232,025 hits

RSSフィード

アーカイブ