ATN No.2 大阪から来たJavaPuzzlers

1,650 views

Published on

Published in: Business, Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
1,650
On SlideShare
0
From Embeds
0
Number of Embeds
128
Actions
Shares
0
Downloads
0
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

ATN No.2 大阪から来たJavaPuzzlers

  1. 1. Advanced Tech Night No.2 大阪から来たJava Puzzlers ~ Google I/Oに行ってきました せんで 2011/07/22 谷本 心
  2. 2. 今日のテーマ Google I/O 2011 1 Advanced Tech Night
  3. 3. Google I/O 2011• 2011/05/10~11@SanFrancisco• Googleの技術イベント• 2トラックの動画をライブ配信• 2~3日後には全トラックの動画を配信• 今年はAndroidが中心• 今年はビジネスや課金に絡む話も多め 2 Advanced Tech Night
  4. 4. 今日のテーマ そんなGoogle I/Oで 見つけた「Java」 3 Advanced Tech Night
  5. 5. それが・・・ Java Puzzlers 4 Advanced Tech Night
  6. 6. Java Puzzlers by … Joshua Bloch 5 Advanced Tech Night
  7. 7. 本日のメイントピック Java Puzzlers in Google I/O 2011 6 Advanced Tech Night
  8. 8. 1. ウォーミングアップpublic static void main(String args[]) { System.out.println(2.00 - 1.10);} a) 0.90 b) 0.9 c) 1 d) その他 7 Advanced Tech Night
  9. 9. 1. ウォーミングアップ(回答)public static void main(String args[]) { System.out.println(2.00 - 1.10);} 出力結果) 0.8999999999999999 8 Advanced Tech Night
  10. 10. 2. おつりの計算import java.math.BigDecimal;public class Change { public static void main(String args[]) { BigDecimal payment = new BigDecimal(2.00); BigDecimal cost = new BigDecimal(1.10); System.out.println(payment.subtract(cost)); }} a) 0.90 b) 0.9 c) 1 d) その他 9 Advanced Tech Night
  11. 11. 2. おつりの計算(回答)import java.math.BigDecimal;public class Change { public static void main(String args[]) { BigDecimal payment = new BigDecimal(2.00); BigDecimal cost = new BigDecimal(1.10); System.out.println(payment.subtract(cost)); }} 出力結果) 0.899999999999999911182158029987476766109466552734375 10 Advanced Tech Night
  12. 12. 2. おつりの計算(回答) 11 Advanced Tech Night
  13. 13. 2. おつりの計算(教訓)1. 精密な数値計算ではBigDecimalを使いなさい。2. BigDecimalでは、引数がStringのコンストラクタ を使いなさい。3. 普通に使った時に問題が起きないような、 APIをデザインしなさい!! 12 Advanced Tech Night
  14. 14. 3. 小学校の足し算public class Elementary { public static void main(String[] args) { System.out.print(12345 + 5432l); System.out.print(" "); System.out.print(01234 + 43210); }} a) 17777 44444 b) 17777 43878 c) 66666 44444 d) 66666 43878 13 Advanced Tech Night
  15. 15. 3. 小学校の足し算(回答)public class Elementary { public static void main(String[] args) { System.out.print(12345 + 5432l); System.out.print(" "); System.out.print(01234 + 43210); }} 出力結果) 17777 43878 14 Advanced Tech Night
  16. 16. 3. 小学校の足し算(回答)public class Elementary { public static void main(String[] args) { System.out.print( 1 2345 + 5432 l); System.out.print(" "); まさかの System.out.print(01234 + 43210); Long! }} 0xから始まるのは16進数表現 0から始まるのは8進数表現 1234 (8進数) = 668(10進数) 15 Advanced Tech Night
  17. 17. 3. 小学校の足し算(教訓)1. longのリテラルでは、大文字のLを使いなさい。2. 変数名でも l は、やめなさい。3. 0から数字を始めてはいけない。 本当に8進数を使うなら、コメントをつけなさい。 16 Advanced Tech Night
  18. 18. 4. アプリの価格public class AppPrice { public static void main(String[] args) { System.out.println(createMessage(“¥¥85.0”) + “¥t“); System.out.println(createMessage("$0.99")); } private static String createMessage(String value) { return "Price:%%%".replaceAll("%%%", value); }} a) Price:¥85.0 Price:$0.99 b) Price:%%% Price:%%% c) Price:85.0 Price:0.99 d) その他 17 Advanced Tech Night
  19. 19. 4. アプリの価格(回答)public class AppPrice { public static void main(String[] args) { System.out.println(createMessage("¥¥85.0") + “¥t“); System.out.println(createMessage("$0.99")); } private static String createMessage(String value) { return "Price:%%%".replaceAll("%%%", value); }} 出力結果) Price:85.0 Price:%%%.99 18 Advanced Tech Night
  20. 20. 4. アプリの価格(回答) 19 Advanced Tech Night
  21. 21. 4. アプリの価格(回答) 20 Advanced Tech Night
  22. 22. 4. アプリの価格(教訓)1. replaceAllやsplitが正規表現を使っていることに 留意しなさい。2. replaceAllを使う場合、第二引数の¥や$はエス ケープしなさい。 • Matcher.quoteReplacement3. String#replaceやStringUtilsを利用しなさい。 21 Advanced Tech Night
  23. 23. 今日のまとめ 22 Advanced Tech Night
  24. 24. 今日のまとめ1. 直感的なAPIデザインを心がけなさい。2. LやIなどの1文字変数は、やめなさい。3. 意図せぬ正規表現に気をつけなさい。4. Java Puzzlers、超おもしろい!5. Google I/Oも、超おもしろい! 23 Advanced Tech Night
  25. 25. 今日の本当のまとめ セミナーの動画を 見なさい 24 Advanced Tech Night
  26. 26. 今日の本当のまとめ 海外セミナーに 行きなさい 25 Advanced Tech Night
  27. 27. 本当に言いたかったこと JavaOne2011に 一緒に行こう! 2011/10/02~06 26 Advanced Tech Night
  28. 28. ご清聴ありがとう ございました 27 Advanced Tech Night

×