Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

至極のJavaクイズ 総集編

16,276 views

Published on

2015.02.25 JJUG ナイトセミナ
「至極のJavaクイズ 総集編」 資料

Published in: Technology
  • accessibility Books Library allowing access to top content, including thousands of title from favorite author, plus the ability to read or download a huge selection of books for your pc or smartphone within minutes ,Download or read Ebooks here ... ......................................................................................................................... Download FULL PDF EBOOK here { http://bit.ly/2m6jJ5M }
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • accessibility Books Library allowing access to top content, including thousands of title from favorite author, plus the ability to read or download a huge selection of books for your pc or smartphone within minutes ,Download or read Ebooks here ... ......................................................................................................................... Download FULL PDF EBOOK here { http://bit.ly/2m6jJ5M }
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • -- DOWNLOAD THIS BOOKS INTO AVAILABLE FORMAT -- ......................................................................................................................... ......................................................................................................................... Download FULL PDF EBOOK here { http://bit.ly/2m6jJ5M } ......................................................................................................................... (Unlimited)
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • DOWNLOAD THI5 BOOKS INTO AVAILABLE FORMAT (Unlimited) ......................................................................................................................... ......................................................................................................................... Download Full PDF EBOOK here { http://bit.ly/2m6jJ5M } ......................................................................................................................... Download Full EPUB Ebook here { http://bit.ly/2m6jJ5M } ......................................................................................................................... ACCESS WEBSITE for All Ebooks ......................................................................................................................... Download Full PDF EBOOK here { http://bit.ly/2m6jJ5M } ......................................................................................................................... Download EPUB Ebook here { http://bit.ly/2m6jJ5M } ......................................................................................................................... Download doc Ebook here { http://bit.ly/2m6jJ5M } ......................................................................................................................... ......................................................................................................................... ......................................................................................................................... .............. Browse by Genre Available eBooks ......................................................................................................................... Art, Biography, Business, Chick Lit, Children's, Christian, Classics, Comics, Contemporary, Cookbooks, Crime, Ebooks, Fantasy, Fiction, Graphic Novels, Historical Fiction, History, Horror, Humor And Comedy, Manga, Memoir, Music, Mystery, Non Fiction, Paranormal, Philosophy, Poetry, Psychology, Religion, Romance, Science, Science Fiction, Self Help, Suspense, Spirituality, Sports, Thriller, Travel, Young Adult,
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • DOWNLOAD THI5 BOOKS INTO AVAILABLE FORMAT (Unlimited) ......................................................................................................................... ......................................................................................................................... Download Full PDF EBOOK here { http://bit.ly/2m6jJ5M } ......................................................................................................................... Download Full EPUB Ebook here { http://bit.ly/2m6jJ5M } ......................................................................................................................... ACCESS WEBSITE for All Ebooks ......................................................................................................................... Download Full PDF EBOOK here { http://bit.ly/2m6jJ5M } ......................................................................................................................... Download EPUB Ebook here { http://bit.ly/2m6jJ5M } ......................................................................................................................... Download doc Ebook here { http://bit.ly/2m6jJ5M } ......................................................................................................................... ......................................................................................................................... ......................................................................................................................... .............. Browse by Genre Available eBooks ......................................................................................................................... Art, Biography, Business, Chick Lit, Children's, Christian, Classics, Comics, Contemporary, Cookbooks, Crime, Ebooks, Fantasy, Fiction, Graphic Novels, Historical Fiction, History, Horror, Humor And Comedy, Manga, Memoir, Music, Mystery, Non Fiction, Paranormal, Philosophy, Poetry, Psychology, Religion, Romance, Science, Science Fiction, Self Help, Suspense, Spirituality, Sports, Thriller, Travel, Young Adult,
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here

至極のJavaクイズ 総集編

  1. 1. 至榊玉の_ Java Quーz 傑作選 寺田 {圭央 宮丿ーー 拓 庭 祐一
  2. 2. R=ーe プログラムを実行すると何ヵゞ出力されるでしょう? 答えーますぺて 4択 pubー篭c cーass 〕aVaPuzzーers { pub工篭C stat竈c V0篭d ma篭n($tr篭ng・・・ args) { Sy$tem・。ut・pr篭ntーn( 〝“〕〕UG PreSentS!" )3 } } ー・ ]JUG PreSentS! 2・ JaVa PuZZーe「S 3・ 。XCAFEBABE 4.その他
  3. 3. R=ーe プログラムを実行すると何ヵゞ出力されるでしょう? 答えーますぺて 4択 pubー篭c cーass 〕aVaPuzzーers { pubー麦C Stat麦C V0麦d ma麦n($tr麦ng・・・ argS) { Sy$tem・。ut・pr篭ntーn( 〝“〕〕UG PreSentS!" )3 } } ー・ JJUG PreSentS! 2' Java Puzzーers 自 全貝参ヵ= ! ! ! 3・ 。XCAFEBABE 4・その他
  4. 4. Puzzーe #ー ve「tig0
  5. 5. ' ー・HitChc。ck #ー vertーg。 2・何も表示されプょ~` 3.コ` ヾイ丿レェ一一 pubー篭C Cーa$S vert篭g。 { 4'そ諸以外 フ stat篭c cーass Str篭ng { pr篭vate $uppー篭er〈java・ーang・$tr苛ng〉 d篭rect婁 pubー篭C str篭ng(java・ーang・str篭ng d篭rect。r) { th篭s・d篭rect = () 一> d篭rect。r; } pubー苛C Suppー篭er<jaVa・ーang・$tr篭ng〉 d竈rect() { return d竈rect3 }} pubー篭C stat竈c V。竈d ma篭n(str篭ng・・・ args) { $tr竈ng aーf = neW str篭ng("H篭tchc。ck")3 SyStem・。ut・pr篭ntーn(aーf・d竈rect()・get()); } }
  6. 6. Puzzーe #ー ve「tig0 AnSWer
  7. 7. } ー・ Hitchc。ck 2・何も表示されプょ~` ・ ・ 3.=ン丿ヾイ丿レェラ一 pubーーc CーaS$ vertーg。 { 4_'-をニ二則退…麦タ=〟 stat篭c cーass Str篭ng { pr篭vate $uppー篭er〈java・‡ang・$tr竈ng〉 d竈rect3 pub主篭c $tr篭ng(java・ーang・str篭ng d篭rect。r) { th篭$・d竈rect = () 一> d篭「ect。r3 } pubー竈c Suppー苛er<jaVa・ーang'$tr竈ng〉 d竈rect() { return d竈rect3 }} pub主篭C stat篭c V。篭d ma篭n($tr篭ng。・・ args) { Str篭ng aーf = neW str篭ng("H篭tchc。ck")3 SyStem・。ut“pr竈 ntーn(aーf・d篭 rect() ・get() )3 }
  8. 8. pubー麦C Cーa$$ vert麦g。 { Stat麦C CーaSS`$tr麦ng { ・・繍 } 矛” ' pubー麦C $tat麦c V0麦d =ia麦n(st「麦ng'。・ argS) { くS輿「麦 ngゝaーf = ne叫く型竈帽藻"H麦 tChCOCk")嘉 巨アぎt管m ・ 0ut ・ pr麦 ntー='(寶主'f麦 d麦 reCt () ・ get () )… } }
  9. 9. 何ヵゞ悪~`の? pubー麦C CーaS$ vert麦g。 { $tat麦c Cーa$$ str麦ng ・・・ } pubー麦C 恩C V0麦團a麦n($t「麦ng・ゝ・ a「gS) { aーf = ne " ChC0Ck")3 em・。ut・pr苛ntー ・d竈rect〈)・get())3 } } 〉 java vertig〝 ェラ一:メィン・メソッドヵゞクラスVertig〝で見っヵゝりません。 ;欠のょうーニメイン ・ メソッドを定義してくださC`。 pubーic s管a[ic v〝id main(string[] args)
  10. 10. pubー麦C Cーa$$ vert麦g。 { Stat麦C CーaSS $tr麦ng { pr麦Vate $uppー麦 er〈j aVa ・ ーang ・ str麦 ng> d麦 reCt3 pubー麦C st「麦ng(java・ーang・$tr麦ng d麦reCt0「) { th麦$・d麦rect = () 一> d麦「eCt0r3 } pub主麦C Suppー麦er<jaVa・ーang'$tr麦ng〉 d麦「ect() { return d麦rect3 }} pubー麦C Stat麦C V0麦d ma麦n(java` ーang「 S'竈「麦ng・・・ args) { str麦ng aーf = neW St「麦ng("H麦tChC0Ck")3 $y$tem・。ut“pr麦 ntーn(aーf〝d麦 rect() ・get() )3 } }
  11. 11. どぅゃつて直す pubー麦C Cーa$S vert管g。 { $tat麦c CーaSS M0V麦e { pr麦Vate suppー麦er〈str麦ng〉 d麦rect3 pubー麦C M。V麦e($tr麦ng d麦reCt0r) { th麦s・d麦rect = () 一> d麦「eCt0「3 } pubー麦C suppー麦erく$tr麦ng〉 d麦rect() { 「eturn d麦 rect婁 }} pubー麦C Stat麦C V0麦d ma麦n($t「麦ng・・・ argS) { M。V麦e aーf = neW M0V麦e("H麦tChC0Ck")婁 $y$tem・。ut・pr麦 ntーn(aーf・d麦 rect() ・get())3 } }
  12. 12. キ '寶 } 亭 芋 こ艸 『 リ 〟 縄] 」 同 じ 量 離濃 〟縄 笥j} 『遭す静 管 一 「 離喜 遭 誓 j 二 絲 ‡寺ー= java.ーang 丿ヾッケ-ジのクラス ~~}〟 }幕』 寶享 縄退ぬ麦〟 } 麦〟,繍{管 } 麦麦麦逢麦言二キ ~ 《昆鼻昆 ゝ寶 縄管暑管「 責務ーニ応じた名前ーニする
  13. 13. P=ZZーe #2 TriT「iaー
  14. 14. } ー・ー235 2・ー345 pubー麦C CーaSS Tr麦Tr麦aー { 3・ ー245 4・ それL又外 pubー麦C $tat麦c V0麦d ma麦n($tr麦ng・・・ argV) { L麦St<エnteger> f麦fthEーement stream・。f(ェ, 2, 3, 4, 5) ・ C0ーーeCt(C0ーーeCt0「$ ・ t0L麦 $t ( ) )3 エnt$t「eam繍rangecー。$ed(ー, 5) ef麦ーter(n 一> n夢轟3 0) ・f0rEaCh(n 一> f篭fthEーement〝rem。ve(n))嚢 f麦 fthEーement・ f0rEaCh(syStem“0ut= 暑pr麦nt)奮 }
  15. 15. Puzzーe #2 TriT「iaー Answer
  16. 16. ー・ー235 2・ー345 pubー麦C CーaSS Tr麦Tr麦aー { 3・ ー245 4・ それL又外 pubー麦C $tat麦c V0麦d ma麦n($tr麦ng・・・ argV) { L麦St<エnteger> f麦fthEーement 一 Stream・。f(エ, 2, 3, 4, 5) ・ C0ーーeCt(C0ーーeCt0「S ・ t。L麦$t())3 エntstream離rangecー。$ed(ー, 5) ef麦ーter(n 一> n寶轟3 == 0) ・f0rEaCh(n 一> f篭fthEーement〝rem。ve(n))奮 f麦 fthEーement・ f0rEaCh(syStem“0ut= 暑pr麦nt)奮 } }
  17. 17. 何ヵゞ悪~`の? LiS垢〈E〉 ーニーま 2 っの 「竈mQV欝 E rem。ve(竈nt 竈ndex) b。。ーean rem。ve(0bject 0) 2' ー245 と答ぇア=人 rem〝ve(0bject @) ヵゞコー丿レされたと考ぇた?
  18. 18. pubー苛C c‡as$ Tr苛Tr竈aー { pub工竈C stat竈c V。竈d ma篭n(Str竈ng・・・ argV) { L苛$t<エnteger> f篭 fthEーement = $tream・。f(エ, 2, 3, 4, 5) ・ c。ーーect(c。‡‡ect。r$ ・t。L苛$t())3 エnt$tream・rangeCー。Sed(エ, 5) ・f竈ーter(n 一> nヲ63 == 0) ・f。rEach(n 一> f篭 fthEーement・ rem。ve(n) ) 3 f篭fthEーement・f。rEaCh(SyStem・。ut= =pr竈nt) ; } } 麦ndeX 0 エ 2 3 4 List〈ェnteger〉 ーーーーー ぱ(庄象
  19. 19. ,,「〟計「 「^「 系`『 〝〝 〝 ~~ 「 〝 麦齢`E丶^埴主菖m〝管〝n“踵暮` 〝『”`ネ〝 ” ”“〝 `壇〝” “〝 〝`二〝〝亡 牛〝J"〝丿麦〝〝 賃〝`” 蓋”麦“ fーJ管二`繍"菫雷壷赴二眞〝工董m蔓〝轢』寶『縄〟〝二麦 享隷 f讐ギ隷`退`隷〝菫昆〟嶼 ( 士'・^ 藝寶奮彗 m]ご遺ヱ 野管團管管 團 管 `p髑隷具ー} n
  20. 20. pubー篭C cーass Tr苛Tr竈aー { pub‡竈C stat竈c V。竈d ma篭n(Str篭ng・・・ argV) { L苛stくエnteger〉 f竈 fthEーement = Stream・。f(エ, 2, 3, 4, 5) ・ c。ーーect (C。ーーect。r$ ・ t。L篭st ( ) )3 エntStream・rangeCー。Sed(エ' 5) ・f竈ーter(n 一> nヲ53 == 0) ・f。rEach(n 一> f苛fthEーement・rem。ve(n))3 f篭fthEーement・f。rEaCh(SyStem・。ut= =pr苛nt) 3 } 0 エ 2 3 4 } 〇 ー ndex L篭St<エnteger> ぱ(毬象
  21. 21. pubー麦C CーaSS Tr管Tr麦aー { pubー麦C $tat麦c V0麦d ma麦n($tr麦ng・・・ argV) { L麦St<エnteger> f麦fthEーement 一 Stream・。f(エ, 2, 3, 4, 5) ・ C0ーーeCt(C0ーーeCt0「S ・ t。L麦$t())3 エnt$tream離rangecー。$ed(ー, 5) 牽=籠繍逸 ー 〉'・. 〟' ー 'f寺ーter(n 一> n贄63 一一 0) 昆〝〝“`〝]ー す~ ー'ー〝ege' "` b。xed() 夏委菫童邉亘"皇‡ ef0rEaCh(n 一> f麦fthEーement・rem。ve(n))嚢 f麦 fthEーement ・ f0rEaCh ($ystemc 。ut= 塁p「麦 nt)奮 } }
  22. 22. 教計ーー メソッドを"平ぴ出す場合` オ一丿ヾロードのメソッドーニ気をっーナる ォ一トボクシングーま便零ーー でも、 期待通り変換されてる? 丿ヾフォ一マンスーニ影響を与ぇてプょ~`? 細,〔`の享主意をーまらって使用する
  23. 23. 藝> Puzzーe #3 AnSWe「 t0 EVerything
  24. 24. #3 AnSWer t0 EVerything pubー竈C cーas$ AnswerT。EVeryth篭ng { pubー竈C stat竈c V0竈d ma竈n($tr竈ng・・・ args) { Map<Byte, $tr篭ng〉 gu竈deB。。k = neW HashMap<>()3 f。r (byte bt = 03 bt < ー003 ++ bt) { Str篭ng heX = Str篭ng・f。rmat("0xヲ602X", bt)3 gu篭deB。。k・pu (bt, heX)3 } $ystem・。ut・ pr竈ntーn(gu竈deB。。k・get(42) )3 } ー・ cx2a } 2・ nuーー 3・ CーaSSCaStEXCepti0n ヵゞ発生 4・ N。SuChEーementEXCepti。n ヵゞ発生
  25. 25. Puzzーe #3 AnSWe「 t0 EVerything AnSWer /
  26. 26. #3 AnSWer t0 EVerything pubー竈C cーa$$ AnswerT。EVeryth篭ng { pubー竈C stat竈c V0竈d ma竈n($tr竈ng・・・ args) { Map<Byte, $tr篭ng〉 gu竈deB。。k = neW HashMap<>()3 f。r (byte bt = 03 bt < ー003 ++ bt) { Str篭ng heX = Str篭ng・f。rmat("0xヲ602X", bt)3 gu篭deB。。k・pu (bt, heX)3 } $ystem'。ut・pr竈ntーn(gu竈deB。。k・get(42))3 } ー・ cx2a } 2・ nuーー 3・ CーaSSCaStEXCepti0n ヵゞ発生 4・ N。SuChEーementEXCepti。n ヵゞ発生
  27. 27. 何ヵゞ悪~`の? Map#get の弓ー数の型ーま 0bjeCt pubー篭c 竈nterface Map<K, V> { v put(K key, V Vaーue)3 v get(。bject key)3
  28. 28. 何カゞ悪~`の? byte bt = ・・・ byte型の{直 蕁Byte型の弓ー数 gu篭deB。。k・ put (bt , hex)3 gu苛deB。。k・get(42)3 int型の{直 蕁0bject型の弓ー数
  29. 29. 何ヵゞ悪{`の? byte bt = ・ ・ ・ gu麦deB00k ・ put ( Byte ・ vaーue。f(bt) , heX)3 g=麦deB00k・ get(エnteger ・ vaー=e0f(42) )3 Byte ・vaー=eQf(42) ・ equaー$ (エntege「 ・vaー=e。f(42)) 今 faー$e
  30. 30. どぅゃつて直す pubー麦C Cーa$$ An$werT。EVeryth麦ng { pubー麦C $tat麦c V0麦d ma麦n($tr麦ng・・' a「g$) { Map〈Byte, str麦ng〉 gu麦deB00k = neW Ha$hMap<>()3 f。r (byte bt 03 bt < エ00; ++ bt) { $t「麦ng heX 一 st「麦ng・f0rmat("0Xヲ暮02X", bt)3 gu麦deB。。k・ pu (bt, heX)3 } $yStem・ 0ut ・ p「麦 ntーn (gu麦deB0。k・ get( (byte)42) )3 } }
  31. 31. †;}》 教計ーー Map<K, V>#get ーま K 型でーまプょく 0bject 型の弓ー数 数ィ直リテラ丿レを渡す=寺ーま型ーニ注意 c。ーーecti。n・rem。ve, ・c。ntains も同様 Byte 型の{直とーnteger型の{直ーま、 同じ数{直でも equaーs ヵゞ成り立たたプょc` Sh0rt, L0ng, Fー。a[, D0ubーe も同様
  32. 32. P=ZZーe #4 Take FiVe
  33. 33. #4 Take Five pub‡竈C cーa$$ TakeF篭ve { pubー竈C $tat竈c V0竈d ma竈n($tr竈ng・・・ arg$) { 篭nt beat 0婁 ー。ng c。unt 03 f。r (; beat < エnteger・MAX一VALUE婁 beat += 5) c。unt++3 c。unt*5) $ystem・。ut・pr篭ntーn("Break") 3 麦f (beat eー$e $y$tem ・ 。ut ・ pr苛 ntーn ( "Keep Rhythm")3 ー' Break 2・ Keep Rhy[hm } } 3.仮"外発生 4.それLヌ外
  34. 34. Puzzーe #4 Take FiVe Answer /
  35. 35. #4 Take Five pub‡竈C cーa$$ TakeF篭ve { pubー竈C $tat竈c V0竈d ma竈n($tr竈ng・・・ arg$) { 篭nt beat 0婁 ー。ng c。unt 03 f。r (; beat < エnteger・MAX一VALUE婁 beat += 5) c。unt++3 c。unt*5) $ystem・。ut・pr篭ntーn("Break") 3 麦f (beat eー$e $y$tem ・ 。ut ・ pr苛 ntーn ( "Keep Rhythm")3 ー' B「eak 2・ Keep Rhythm } } 3.績"外発生 4.それLヌ外
  36. 36. 何ヵゞ悪{`の? 。 5 ー。 ・・・・ ・・ 2ー47483645 〝 。。。〝。〝。5 。。〝。。〝nA ・・・・ ・・ 7FFF FFFD {((「家
  37. 37. 何ヵゞ悪~`の? 〝 5 ー〝 ・・・・ ・・ 2ー47483645 一2ー47483646 〝 。。。〝 。〝〝5 。。。〝 〝〝〝A ・・・・ ・・ 7FFF FFFD 8〝り。 。002 byte, int, d。ubーe プょどーま先頭 bit ヵゞ符号 bit
  38. 38. ;』 何ヵゞ悪~`の? 〝5 ー。 ・・・・ ・・ 2ー47483645 一2ー47483646 〝 。。0。。。〝5 。。。〝。〝〝A ・・・・ ・・ 7FFF FFF野 8n。。 0。02 byte, int, d。ubーe プょどーま先頭 bit ヵゞ符号 bit 演算ーニょって先頭 bitヵゞ変ィ齔 蕁 符号ヵゞ変ィ齔してしまぅ Java ーまオ一丿ヾーフロ一 アンダ一フローを検矢ロしプょ~`
  39. 39. どうゃって直す pub‡竈C cーa$$ TakeF篭ve { pubー竈C $tat竈c V0竈d ma竈n($tr篭ng・・・ arg$) { 篭nt beat 0婁 ー。ng c。unt 一 03 f。r ( ; beat < エnteger・MAX一VALUE-5婁 beat += 5) c。unt++3 竈f (beat c。unt*5) $y$tem・。ut・pr竈ntーn("Break")3 eーse $y$tem・。ut・pr竈ntーn("Keep Rhythm")3 } }
  40. 40. どうゃって直す pubー竈C cーas$ TakeF篭ve { pr竈vate stat苛c B竈gエnteger MAX = neW B竈gエnteger("7FFFFFFF", ー6)3 pr苛vate stat篭c B竈gエnteger エNC = neW B篭gエnteger("5")3 pub主篭C Stat篭C V0篭d ma篭n(str篭ng・・・ args) { B竈gエnteger beat = neW B篭gエnteger("0")3 ー。ng c。unt = 03 f。r (; beat・C0mpareT0(MAX)<03 beat=beat・add(エNC)) c。unt++3 篭f (beat・[。ngvaーue()==c。unt*5) $y$tem・。ut・pr竈ntーn("Break")3 eーse system・。ut・pr篭nt‡n("Keep Rhythm")3
  41. 41. 教計ーー オ一丿ヾーフロー アンダ一フローーニ夏主意 {直の範囲ヵゝら適切プょ型を選択する 範囲ヵゞ疇良定できプょ~`のでぁれーま BigDecimaー, Bigーnteger の使用も検言寸
  42. 42. Puzzーe #5 Kana Cataー0g
  43. 43. #5 Kana Cataー0g pubー篭c cーass KanaCataー0g { pub工篭C stat竈c V0篭d ma篭n($tr篭ng・・・ エnt$tream・range(' ぁ ',' ゎ ') ・mapT。。bj(n 一> (cha「)n) ・f。rEach(System・。ut= =Wr篭te) 3 } } ー・ぁ~ゎの表示 2・ぁ~ゎの表示 args) { 3.何も表示されプょ~` 4・文字{ヒーナ発生
  44. 44. 零> Puzzーe #5 Kana 〔ataー0g AnSWer
  45. 45. #5 Kana Cataー0g pubー篭c cーass KanaCataー0g { pubー篭C stat竈c V0篭d ma篭n($tr篭ng・・・ エnt$tream・range(' ぁ ',' ゎ ') ・mapT。。bj(n 一> (cha「)n) ・f。rEach(System・。ut= =Wr篭te) 3 } } ー・ぁ~ゎの表示 2・ぁ~ゎの表示 args) { 3・何も表示されブょ~` 4・文字{ヒーナ発生
  46. 46. ~野=〝團誕〝管ず稽 碁ご〝~計=…ニ‡~ャ團〝ご奮プ饗 ~〝麦昆誓an亡a藝~轟菖薯轟三薯主〝D〟量 す〝費麦} F…置 肛 婁葦 離〝『 葦 昼鬱馨蓋 董二寶璽}讐 ニ …言真 亀'3 昆一~'” 『ご“〝"' 野〝 ~}~〝“ ニ寶`主縄・ 彙主
  47. 47. す鼻〝mapf。。bj(n 一> (char)n) 珊2 「 ー243ー “グ 今 響直 一『 『 `』縄L〟 ~ ^】ニJ〝『} ggjュ… 『計`; 〝〝` _~繍' 縄十}』 芹す 會』 〟^〟… 』 ェ 〝亨ぬ 峰 ト 「 }〝す
  48. 48. 量 何ヵゞ悪~`の? pubー篭c cーass KanaCataー。g { pub‡竈C stat竈c V。竈d ma篭n(Str篭ng・・・ args) { エnt$tream・range(' ぁ ',' わ ') ・mapT。。bj(n 一> (char)n) ・f。rEach(sy$tem・。ut饗 =Wr篭te) ; p「int/p「intーn でーま麦よく Wirte
  49. 49. 何ヵゞ悪~`の? System・。ut の型 : PrintStream write(int b) ーま丿ヾッファーニ書き込み 改行コ一ドヵゞ与ぇられるまで=ush しプょ~` write(int b)ーま丿ヾィトィ直をそのまま書き出し 藁睾i寛ー=ょって文字ィ齔ーナの可能性ぁり デフォ丿レトェンコ一ディングで出力 = print/printーn L{(迂象
  50. 50. どぅゃつて直す pubー麦C Cーa$$ Kanacataー。g { pubー麦C Stat麦C V0麦d ma麦n($tr麦ng・・・ argS) { エnt$tream・range(' ぁ ',' ゎ ') ・mapT。。bj(n 一> (cha「)n) ・ f0「EaCh(SyStem・0ut= =pr麦nt)3
  51. 51. 教計ーー 慣れ業見しん沈三 APーでも必ず Javad。c をチェック 慣れ親しんで~`プょc` APープょら、 ブょおさら しっヵゝりと 丿avad。c を読む
  52. 52. Puzzーe #6 。ddS and S0dS 圃
  53. 53. #6 。dds and s。ds pubー篭c cーass 0ddsAndS。ds { pubー麦C Stat麦C V0麦d ma麦n($t「麦ng・・・ argS) { ー0ng bet = 303 fー。at rate = ー・75f; $ystem・。ut・pr篭nt[n(bet * rate); } } ー・30 2・ 52・49999 3・ 52・5 4.処王量系ーニょって異プょる
  54. 54. Puzzーe #6 。ddS a=d sQdS AnSWer 興
  55. 55. #6 。dds and s。ds pubー篭c cーass 0ddsAndS。ds { pubー麦C Stat麦C V0麦d ma麦n($t「麦ng・・・ argS) { ー0ng bet = 303 fー。at rate = ー・75f; $ystem・。ut・pr篭nt[n(bet * rate); } } ー・30 2・ 52・49999 3・ 52・5 4.処王量系ーニょって異プょる
  56. 56. 「 『^ 篇繍 ョ縄三 g j 『 ニ }繍 }} }〟皇 〝〝 『 離』鼻縄す 〟 '「 ぬ}縄 』… …ェ』 数,点
  57. 57. ;』 何ヵゞ悪~`の? =。at 型の表藁見 = ーEEE754 binary32 2進浮動丿]`数,点数形式 丿j`数,点Lヌ下ヵゞ 2'ー,2'麦 2'3..・ で表せる 蕁2進浮動丿]`数〟点数で正確ーニ表藁見可能 ー・75 = 2〝+2一ー+2 一2 = ー・ーー (2進数) 3・625 = 2ー+2。+2'ー+2'3 = ー0・ー0ー (2進数)
  58. 58. ;』 何ヵゞ悪~`の? ー0進丿]`数,点数のーまとんどヵゞ正確ー=表王見できプょc` eX) ー。g 菲 ー・〝8f 今 ー。8・野〝野りー printーn()ーま数{直を適当ーニ丸めて表示 eX) system・0=t・prin[ーn(ー・。8f); 今 ー・08 本当の{直ーま ー ・。8。り。。g429ー 5・・・
  59. 59. 零> どうゃって直す ー0進丿]`数,点数を正確ー=表藁見させるーニーま 鼻 BigDecimaー Aーternative way= int/ー。ngー=ょる固定丿]`数,点数演算の実装
  60. 60. どぅゃつて直す pubー麦C CーaSS 0ddSAndS0dS { pubー麦C Stat麦C V0麦d ma麦n($tr麦ng・・・ argS) { B麦gDec麦maー bet = neW B麦gDec麦maー("30")3 B麦gDec麦maー rate = neW B管gDec麦maー("エ・75")3 sy$tem・ 0ut ・ pr麦 ntーn(bet ・ muーt麦 pーy(rate) )婁 } }
  61. 61. †;』 教計ーー 丿ー`数,点数を正確ーこ扱ぅプログラムでーま =。at/d。ubーe ーま使用禁止 たとぇーざ金融系 丿]`数,点数を正確ーニ扱ぅプょら BigDecimaー またーまint/ー。ngーニょる固定丿]`数,点数演算の実装
  62. 62. Puzzーe #7 AntS and GraSSh0pper
  63. 63. #7 AntS and G「aSSh0ppe「 pubー竈C cーass Ant$AndGrassh。pper { $tat苛c ー。ng graSsh0pperW。rk() { return neW Rand。m()・ー0ng$(エ一000一000L)・sum()3 } $tat竈c ー。ng antsW。rk() { return neW Rand。m()・ー0ng$(エ一000一000L)・paraー‡eー()・$um(); } L{(迂象 pub主竈c $tat苛c V0竈d ma篭n($tr竈ng・・・ arg$) { ー。ng $ = sy$tem・nan。T篭me()3 g「a$sh〝ppe「w。「k() 婁 ー・ AntS W0rk faSte「= t「ue ー。ng ghT竈me = $ystem・ nan。T苛me ( ) 一S3 2' Ants w。rk fasterg faーse 3・ 場合ーニょる $ = $y$tem・nan。T篭me( antSW0rk()3 ー。ng atT苛me = sy$tem・nan。T苛me()-s3 $ystem・。ut・pr竈ntーn("Ant$ W0rk fa$ter= " }} + ((ghT苛me 一 atT篭me) > 0)); 4・それ以外
  64. 64. Puzzーe #7 AntS and GraSSh0pper AnSWer /
  65. 65. † #7 AntS and G「aSSh0ppe「 pubー竈C cーass Ant$AndGrassh。pper { $tat苛c ー。ng graSsh0pperW。rk() { return neW Rand。m()・ー0ng$(エ一000一000L)・sum()3 } $tat苛c ー。ng antsW。rk() { return neW Rand。m()・‡0ng$(エ一000一000L)・paraー‡eー()・$um()3 } L{(迂象 pub主苛c $tat苛c V0竈d ma篭n($tr竈ng・・・ arg$) { ー。ng $ = sy$tem・nan。T篭me()3 gra$sh〝ppe「w。「k() 饗 ー・ AntS W0rk faSte「= t「ue ー。ng ghT竈me = $ystem・ nan。T苛me ( ) 一S3 2' Ants w。rk fasterニ faーse 團ム 一 s = system・ nan。Time( 昆ニ 彗昆鼓貴る antSW0rk() 3 ー。ng atT苛me = sy$tem・nan。T苛me()-s3 $ystem・。ut・pr竈ntーn("Ant$ W0rk fa$ter= " }} + ((ghT苛me 一 atT篭me) > 0));
  66. 66. 何ヵゞ悪{`の? Stream#paraーーeー()ヵゞ 「常ー=速~`」 ーま玄ゴ想
  67. 67. 警〟 何ヵゞ悪{`の? Stream#paraーーeー()カゞ 「常ーニ速~`」 ーま玄ゴ想 Rand。m#next pr。tected 竈nt next(竈nt b竈ts) { ー。ng 。‡d$eed, nextseed3 At。m苛cL。ng seed = th篭s・seed3 d0 { 。ーdseed = seed・get()3 nextseed = (。ーd$eed * muーt苛pー篭er + addend) & mask3 } wh竈ーe (!seed・c。mpareAndset(。ーdseed, next$eed)); return (竈nt)(next$eed >>> (48 一 b篭t$))3 } At。micL。ng ーま頻繁ーニ重新することを想定して{`プょ~`
  68. 68. 何ヵゞ悪~`の? Stream#paraーーeー ぺヵゝらず集 要素ヵゞ少沈ょ~` ぉょそ ー06要素ょりも少ブょ~` 外音B変数へのアクセス ーー慎序依存 無限ストリ一ム iterate(), generate() 入出ヵ Fiーes#ーines(), Bu赫eredReader#ーines()
  69. 69. どうゃって直す static ー。ng antsw。rk(〉 { 事前ーニ舌L数麦"を作成してぉく ー。ng[] rand neW Rand。m() ・ ー。ngs ( エ一000一000L) ・ t。Array()3 return L。ng$tream・。f(rand) ・ pa raーーeー () ・$um()婁
  70. 70. 教計ーー 丿ヾラレ丿レ Stream ーま落とし穴も多C` 動作原王量を王量解して、 丿ヾフォ一マンスを向上 関数を使った考ぇ方を王量解する
  71. 71. Puzzーe #8 S=perSta「
  72. 72. ー・ Supe「Sta「= 20ー 9 0ーd 2・ SuperSta「= 20ー 5 0ーd #8 S=pe「Star 3・績"外発生 pubー麦C Cーa$$ super$tar { 4'それL丿外 pubー麦C $tat麦C f麦naー super$tar super$tar neW super$tar()3 pr麦Vate $tat麦c f麦naー 麦nt BエRTH一YEAR =Year'。f(-4)'getvaーue()3 pr麦Vate Stat麦C f麦naー 麦nt THエ$一YEAR Year・n。w()・getva主ue()3 pr麦Vate f麦naー 麦nt age … pr苛vate Superstar(){ age THエS一YEAR 一 BエRTH一YEAR; } pubー麦C 麦nt getAge(){ retu「n age3 } pubー麦C $tat麦c V0麦d ma麦n($tr麦ng・・・ argV){ sy$tem・。ut・p「麦ntーn("supe「sta「= " + $upe「sta「・getAge() +" 。ーd")…
  73. 73. Puzzーe #8 s=perStar Answer
  74. 74. ー・ superstar= 20ー9 0ーd 2・ s=pe「star= 20ー5 0ーd 3・ 績咀外発 寶丁 鰹' -」ニ` ニー璽寶"〝 } ~・' }〟 ・ = pub工舟c cーass superstar { -・ ~ '‡]繍繍丿' SLーpe「SLさr・00ーCす一 pubー麦C Stat麦C f麦naー superstar SuperStar = neW supe「star()婁 pr麦Vate $tat麦c f麦naー 麦nt BエRTH一YEAR =Year・。f(-4)・getvaーue()3 pr麦Vate $tat麦c f麦na主 麦nt THエ$一YEAR Year・n。w()・getvaーue()3 pr麦Vate f麦naー 管nt age 3 pr苛vate Superstar(){ age = THエS一YEAR - BエRTH一YEAR; } pubー麦C 麦nt getAge(){ return age3 } pubー麦C Stat麦C V0麦d ma麦n($t「麦ng・・・ a「gV){ $yStem'0ut'pr麦ntーn("superstar馨 " + superstar・getAge() +" 0ーd")婁
  75. 75. ;』 何ヵゞ悪~`の? クラス変数の‡刀期ィ齔の刀ー慎番 Java VM ヵゝら main を読んア三後の‡刀期ィ齔刀ー慎 ー・ static フィ一丿レドヵゞデフォ丿レト値で初期{齔 2・ コ一ド言己載ーー慎ーニ static ィニシャライザを実行
  76. 76. クラス変数の初期ィ齔 ー・ static フィ一丿レドカゞデフォ丿レト{直で‡刀期〈齔 stat篭c f篭naー Superstar superstar = nuーー3 stat竈c f篭naー 篭nt BエRTH一YEAR = 0; $tat竈c f竈naー 竈nt THエ$一YEAR = 0;
  77. 77. クラス変数の初期ィ齔 2・ コ一ド言己載刀ー慎ーニ static ィニシャライザを実行 stat篭c f篭naー $uperstar superstar = neW $uperstar(); stat竈c f竈naー 竈nt BエRTH一YEAR = 0; $tat竈c f竈naー 竈nt THエS一YEAR = 0; pr竈vate super$tar(){ age = THエ$一YEAR 一 BエRTH一YEAR3 }
  78. 78. クラス変数の‡刀期ィ齔 2・ コ一ド言己載刀ー慎ーニ static ィニシャライザを実行 stat篭c f篭naー SuperStar superstar = new Superstar(); stat竈c f竈naー 竈nt BエRTH一YEAR = 0; $tat竈c f竈naー 竈nt THエS一YEAR = 0; pr竈vate Super$tar(){ age = THエ$一YEAR 一 BエRTH一YEAR3 } 2・ー THーS一YEAR/BーRTH一YEAR へのアクセス轟寺 クラスの再‡刀期ィヒーニトラィ 2.2 superstar()ーま初期ィヒ済み蕁再襲帯的初期ィ齔ーま無祝 2・3 縞果的ー= THーS一YEAR/BーRTH一YEAR ーま 0 のまま 隷 age ーま 。
  79. 79. クラス変数の初期ィ齔 2・ コ一ド言己載刀ー慎ーニ static ィニシャライザを実行 stat竈c f竈naー 竈nt BエRTH一YEAR = Year・。f(-4)・getvaーue(); $tat竈c f竈naー 竈nt THエS一YEAR = Year・n。w()・getvaーue()3 age ーま 0 のまま 蕁 getAge() ーま 0 を返す
  80. 80. どうゃって直す pub主篭C C主a$$ $uper$tar { pr竈vate stat苛c f竈naー 竈nt BエRTH一YEAR =Year・。f(-4)・getvaーue(); pr竈vate stat竈c f竈naー 竈nt THエS一YEAR Year・n。w()・getvaーue(); pr苛vate f竈naー 苛nt age ; 依存関係ーニ夏主意し、 ‡刀期ィ齔ーー慎を変吏 pubー竈C $tat竈c f竈naー $uper$tar $uper$tar neW $uper$tar(); pr竈vate Super$tar(){ age THエS一YEAR 一 BエRTH一YEAR; } pub‡竈C 竈nt getAge(){ return age3 } pubー苛C stat苛c V。苛d ma苛n(Str苛ng・・・ argv){ SyStem・0ut・pr竈ntーn("SuperStar= " + $uper$tar・getAge() +" 。ーd")3
  81. 81. ~g昆 二昆亨~~ヰ~麦〝 」~〝“す昆』_ 〝麦縄昆 〝麦`二麦〝=~享退ー頂寶野寶昆睾- 』芒「〝” 〟〟^^“〝 〝〟~`〝~繍麦〝 “~ 〟〟〟_`〟一 static フィ一丿レドの‡刀期{齔刀ー慎 : コードの言己載刀ー慎 「亘「静`〟.二 前 昆管麦 〝亡~`〟_`『麦平' ` 〝-`〝三二 罰 静縄 ~ stati 寶 声ず 讐 遣 { 二 寶 』 ^遭 寶 享 寶 の{直も参照可能
  82. 82. Puzzーe #9 Metam0「ph0SeS
  83. 83. ー・ 4242 2・ 84 3・仮咀外発 寶一 4・それL又外 pub主竈c cーass Metam。rph。SeS<M> { <T> T transf。rm(T arg, Funct竈。n〈T, T> fun) { return fun・appーy(arg)3 } Str苛ng transf。rm(。bject arg, Unary0perat。r<Str苛ng> 0p) { return 。p'appーy(arg・t。str竈ng()); } pub‡篭C $tat苛c V。篭d ma竈n($tr苛ng[] arg$) { Unary0perat。r<エnteger> repeat = X 一> X + X; Metam。rph。se$ mm = neW Metam。rph。ses() ; SyStem・0ut・ pr竈ntーn(mm・transf。rm(42, repeat) )3
  84. 84. Puzzーe #9 Metam0rph0SeS AnSWe「
  85. 85. 〝 ー.4242 一 声 鼻ーL 『 2・ 84 3・ 「譚} 麦囗〝発芒主三 CーaSSCaS'卍E)(Cep寶吏i0n 4・それLヌ外 pub主竈c cーass Metam。rph。SeS<M> { <T> T transf。rm(T arg, Funct竈。n〈T, T> fun) { return fun・appーy(arg)3 } Str苛ng transf。rm(。bject arg, Unary0perat。r<Str苛ng> 0p) { return 。p'appーy(arg・t。str竈ng()); } pub‡篭C $tat苛c V。篭d ma竈n($tr苛ng[] arg$) { Unary0perat。r<エnteger> repeat = X 一> X + X; Metam。rph。se$ mm = neW Metam。rph。ses() ; SyStem・0ut・ pr竈ntーn(mm・transf。rm(42, repeat) )3
  86. 86. 〝“” jaVaC -xー麦nt=unchecked Metam0rph0$e$・jaVa Metam0rph0$eS・jaVa=エ4= ニ ・ [unCheCked] raW型Metam0rph0$e$の メ ン丿 ヾ一と しての t「ansf。rm(。bject,una「y。perat。rくstr麦 ng>) への 無検査ロ平出 しです sy$tem・ 0ut ' pr麦 ntーn (mm・ tran$f。rm(42 , repeat) )3 ^
  87. 87. ゞ`? 何ヵ 悪~ の ' 型丿ヾラメ一タヵゞぁるのー= pubー篭C cーa$$ Metam。rph。$e$<M〉 { pubー篭C stat篭c V。篭d ma篭n(str篭ng・・・ args) { Unary0perat。r<エnteger> repeat = X 一> X + X3 Metam。rph。ses mm = neW Metam。rph。ses() 3 芒tem・。ut・pr篭ntーn(mm・transf。rm(42, repeat))3 } } 型弓ー数プょし蕁 raw 型 raw 型の{直ーニ対するメソッド"手ぴ出し 蕁型弓ー数 ・ 型丿ヾラメ一タヵゞ考慮されプょc丶 [(則^
  88. 88. 何ヵゞ悪~`の? pubー麦c cーass Metam。rph。ses { 本来ーまこっちを=ー丿レすることを期待 。bject t「anSf0「m(0bjeCt a「g, Funct麦。n fun) { 「etu「n fun・appーy(a「g)3 } $tr麦ng tranSf0rm(0bjeCt arg, unary。perat。r 0p) { 「etu「n 。p・appーy(a「g・t。$t「麦ng())3 } pubー麦C $tat麦C V0麦d ma麦n(str麦ng・・・ arg$) { Unary0perat0r<エnteger> repeat = X 一> X + X3 Metam0「ph0SeS mm = neW Metam。「ph。se$()3 SyStem・0ut・pr麦ntーn(mm・t「ansf。rm(42, 「epeat) )3
  89. 89. 何ヵゞ悪{`の? pubー篭C cーass Metam。rph。ses { 0bjeCt transf。rm(。bject arg, Funct竈。n fun) { 「etu「n fun・appーy(a「g)3 型丿ヾラ「メタヵ麦 視されたため` } こちらヵゞコ一丿レ る $tr篭ng transf。rm(。bject arg, Unary0perat。r 。p) { return 。p・appーy(arg・t。$tr篭ng())3 } pub主篭C $tat篭c V。篭d ma篭n(str篭ng・・・ arg$) { Unary0perat。rくエnteger> repeat = X 一> X + X3 Metam。rph。ses mm neW Metam。rph。ses() 3 $ystem・。ut・pr篭ntーn(mm・transf。rm(42, repeat) );
  90. 90. 何ヵゞ悪{`の? pubー篭C cーass Metam。rph。ses エ 0bjeCt transf。rm(。bject …una「y。pe「at0「<ーntege「>を return fun・appーy(arj Una「y。perat0r<String> ーニ野麦入しょぅとして } cーasscastExcepti。n 仮咀外発生 $tr篭ng transf。rm(。bject arg, Unary0perat。r 。p) { return 。p・appーy(arg・t。$tr篭ng())3 } pub主篭C $tat篭c V。篭d ma篭n(str篭ng・・・ arg$) { Unary0perat。rくエnteger> repeat = X 一> X + X3 Metam。rph。ses mm = neW Metam。rph。ses() 3 $ystem・。ut・pr篭ntーn(mm・transf。rm(42, repeat) );
  91. 91. どうゃって直す pub工竈C cーa$$ Metam。rph。$e$<M〉 { <T> T transf。rm(T arg, Funct竈。n〈T, T> fun) { return fun・app‡y(arg)3 } Str竈ng tran$f。rm(。bject arg, Unary0perat。r<Str竈ng> 0p) { return 。p・appーy(arg・t。$tr竈ng())3 } pubー苛C stat苛c V。苛d ma苛n(str苛ng[] args) { Unary0perat。r<エnteger> repeat = x 一> x + x; Metam。rph。$e$<?> mm = neW Metam。rph。$e$() 3 $ystem・。ut・pr竈ntーn(mm・transf。rm(42, repeat) )3 } 何でも~`~`ので、 型弓ー数をっーナる
  92. 92. どうゃって直す 型丿ヾラメ一タをプょくす pub工竈C cーa$$ Metam。rph。ses { <T> T transf。rm(T arg, Funct竈。n〈T, T> fun) { return fun・app‡y(arg)3 } Str竈ng tran$f。rm(。bject arg, Unary0perat。r<Str竈ng> 。p) { return 。p・appーy(arg・t。$tr竈ng())3 } pubー篭C stat苛c V。苛d ma苛n(str苛ng[] args) { Unary0perat。r<エnteger> repeat = x 一> x + x; Metam。rph。$e$ mm = neW Metam。rph。$e$() ; $ystem・。ut・pr竈ntーn(mm・transf。rm(42, repeat) )3
  93. 93. 教計ーー 「aW 型ーま使用 し麦よ{` raw 型ーま J2SEー・4 以前のコードとの互換性の汰=めのみ コン丿ヾィラの警告ーま無視しプょ~`

×