- ÇöÀç À§Ä¡
- home > ÄÄÇ»ÅÍ¡¤ICT¡¤¾îÇÐ > ÄÄÇ»ÅÍ¡¤IT µµ¼ > ÇÁ·Î±×·¡¹Ö/¾ð¾î > ÀÚ¹Ù ¸¶½ºÅÍ ºÏ[Á¦ÀÌÆà]
±âÃÊ ¹®¹ýÀº ¹°·Ð, ¿Ïº®ÇÑ ÇöÀå ´ëÀÀÀ» À§ÇÑ ¸ÂÃ㠾ȳ»¼!
ÀÌ Ã¥Àº ½Ã½ºÅÛ °³¹ßÀÇ ÇÙ½É ºÐ¾ß¿¡¼ ÀÚ¹Ù¸¦ »ç¿ëÇØ ¿Â Acroquest TechnologyÀÇ °³¹ßÀÚµéÀÌ 20¿© ³âÀÇ °³¹ß °æÇè°ú ¹®Á¦ ÇØ°á ³ëÇϿ츦 Åä´ë·Î ÁýÇÊÇÑ Ã¥ÀÌ´Ù. ÀÚ¹ÙÀÇ ±âÃʺÎÅÍ ½ÇÀü±îÁö ü°èÀûÀ¸·Î ¼³¸íÇÏ°í ÀÖÀ¸¸ç, ƯÈ÷ ÀÚ¹Ù ÇÁ·Î±×·¡¹Ö¿¡¼ÀÇ À¯Áöº¸¼ö, °ß°í¼º, ¼º´É, °³¹ß È¿À² µîÀ» °í·ÁÇØ ÇÑÃþ ´õ ½ÇÀü¿¡ È°¿ëÇÒ ¼ö ÀÖ´Â ³»¿ëÀ¸·Î ±¸¼ºÇÏ¿´´Ù.
½ÇÀü¿¡¼ÀÇ È°¿ë ¹æ¹ýÀ» ´õ ¾Ë°í ½ÍÀº ÀÚ¹Ù °³¹ßÀÚ³ª ´Ù¸¥ ¾ð¾î¿¡ ´ëÇÑ °æÇèÀº ÀÖÀ¸³ª Àڹٴ óÀ½ÀÎ µ¶Àڵ鿡°Ô ÀÌ Ã¥ÀÌ ½ÇÀü ÀÚ¹Ù ÇÁ·Î±×·¡¹Ö ´É·ÂÀ» Å°¿ì´Â µ¥ ¸¹Àº µµ¿òÀÌ µÉ °ÍÀÌ´Ù.
?Ã¥ÀÇ ÀϺΠ³»¿ëÀ» ¹Ì¸® Àо½Ç ¼ö ÀÖ½À´Ï´Ù. ¹Ì¸®º¸±â
ÀÌ Ã¥Àº ½Ã½ºÅÛ °³¹ßÀÇ ÇÙ½É ºÐ¾ß¿¡¼ ÀÚ¹Ù¸¦ »ç¿ëÇØ ¿Â Acroquest TechnologyÀÇ °³¹ßÀÚµéÀÌ 20¿© ³âÀÇ °³¹ß °æÇè°ú ¹®Á¦ ÇØ°á ³ëÇϿ츦 Åä´ë·Î ÁýÇÊÇÑ Ã¥ÀÌ´Ù. ÀÚ¹ÙÀÇ ±âÃʺÎÅÍ ½ÇÀü±îÁö ü°èÀûÀ¸·Î ¼³¸íÇÏ°í ÀÖÀ¸¸ç, ƯÈ÷ ÀÚ¹Ù ÇÁ·Î±×·¡¹Ö¿¡¼ÀÇ À¯Áöº¸¼ö, °ß°í¼º, ¼º´É, °³¹ß È¿À² µîÀ» °í·ÁÇØ ÇÑÃþ ´õ ½ÇÀü¿¡ È°¿ëÇÒ ¼ö ÀÖ´Â ³»¿ëÀ¸·Î ±¸¼ºÇÏ¿´´Ù.
½ÇÀü¿¡¼ÀÇ È°¿ë ¹æ¹ýÀ» ´õ ¾Ë°í ½ÍÀº ÀÚ¹Ù °³¹ßÀÚ³ª ´Ù¸¥ ¾ð¾î¿¡ ´ëÇÑ °æÇèÀº ÀÖÀ¸³ª Àڹٴ óÀ½ÀÎ µ¶Àڵ鿡°Ô ÀÌ Ã¥ÀÌ ½ÇÀü ÀÚ¹Ù ÇÁ·Î±×·¡¹Ö ´É·ÂÀ» Å°¿ì´Â µ¥ ¸¹Àº µµ¿òÀÌ µÉ °ÍÀÌ´Ù.
?Ã¥ÀÇ ÀϺΠ³»¿ëÀ» ¹Ì¸® Àо½Ç ¼ö ÀÖ½À´Ï´Ù. ¹Ì¸®º¸±â
ÀúÀÚ: Ÿ´Ï¸ðÅä ½Å,»çÄ«¸ðÅä À¯ÀÌÄ¡·Î,¾ÆÅ°¹Ù ¸¶ÄÚÅä,¹«¶óŸ ÄËÀÌÄ¡·Î,¿ÀÄ«´Ù ŸÄí¾ß Àú/Á¤ÀÎ½Ä ¿ª
CHAPTER 1 ÀÚ¹ÙÀÇ ±âº» ÀÌÇØÇϱâ 1
1.1 ÀÚ¹Ù¶õ? 2
1.1.1 ÀÚ¹ÙÀÇ Æ¯Â¡ 2
1.1.2 ÀÚ¹ÙÀÇ ¼¼ °¡Áö ¿¡µð¼Ç°ú µÎ °¡Áö ȯ°æ 3
1.1.3 Java VMÀÇ Á¾·ù 4
1.1.4 ÀÚ¹Ù°¡ ½ÇÇàµÇ´Â ¼ø¼ 4
1.2 ¡® Hello Java World!¡¯¸¦ Ç¥½ÃÇØ º¸ÀÚ 6
1.2.1 ÀÚ¹Ù ¼³Ä¡Çϱâ 6
1.2.2 ÀÌŬ¸³½º ¼³Ä¡Çϱâ 9
1.2.3 ¡®Hello Java World!¡¯ ÇÁ·Î±×·¥À» ¸¸µé¾î º¸ÀÚ 13
1.2.4 ÇÁ·Î±×·¥ ½ÇÇàÇϱâ 16
CHAPTER 2 ±âº»ÀûÀÎ ÀÛ¼º¹ý ÀÍÈ÷±â 17
2.1 ÀÚ¹ÙÀÇ ±âº»ÀûÀΠǥ±â¹ý 18
2.1.1 ¹®Àå°ú ºí·Ï 18
2.1.2 ÁÖ¼® 19
2.1.3 º¯¼ö, ŸÀÔ, ¸®ÅÍ·² 19
2.1.4 ¿¬»êÀÚ 20
2.1.5 Á¦¾î ±¸¹® 26
2.2 Ŭ·¡½º¿Í ¸Þ¼µå 34
2.2.1 Ŭ·¡½º ¼±¾ðÇϱâ 34
2.2.2 ¸Þ¼µå ¼±¾ðÇϱâ 34
2.2.3 ¼ö½ÄÀÚ 36
2.2.4 ¸Þ¼µå ¿À¹ö·Îµù 38
2.2.5 main ¸Þ¼µå 39
2.2.6 ÀνºÅϽº 39
2.2.7 this¸¦ »ç¿ëÇÒ ¶§ÀÇ ÁÖÀÇÁ¡ 41
2.2.8 »ý¼ºÀÚ 42
2.3 Á¤º¸ °øÀ¯¸¦ À§ÇØ ¾Ë¾ÆµÑ ±â´É 45
2.3.1 Javadoc 45
2.3.2 ¾Ö³ëÅ×ÀÌ¼Ç 46
2.4 ¸í¸í ±ÔÄ¢ 48
2.4.1 Ŭ·¡½º¿Í º¯¼ö´Â Ä«¸á ÄÉÀ̽º·Î, »ó¼ö´Â ½º³×ÀÌÅ© ÄÉÀ̽º·Î ÇÑ´Ù 48
2.4.2 º¯¼ö¸í µÚ¿¡´Â ¡®_¡¯¸¦ ºÙÀÌÁö ¾Ê´Â´Ù 49
2.4.3 º¯¼ö´Â ¸í»ç, ¸Þ¼µå´Â µ¿»ç·Î ¸í¸íÇÑ´Ù 49
2.4.4 ¡®ºÒ±æÇÑ ³¿»õ¡¯°¡ ³ª´Â À̸§¿¡ ÁÖÀÇÇÏÀÚ 50
CHAPTER 3 ŸÀÔ °ø·«Çϱâ 51
3.1 ±âº»Çü°ú ÂüÁ¶Çü 52
3.1.1 ÀÚ¹Ù´Â Á¤Àû ŸÀÔ ¾ð¾î 52
3.1.2 ±âº»Çü 53
3.1.3 ÂüÁ¶Çü 57
3.1.4 ·¡ÆÛ Å¬·¡½º 58
3.1.5 ¿ÀÅä¹Ú½Ì°ú ¾ð¹Ú½Ì 62
3.2 Ŭ·¡½º ÀÛ¼ºÇϱâ 64
3.2.1 Ŭ·¡½º Á¤ÀÇÇϱâ 64
3.2.2 ÆÐÅ°Áö 65
3.2.3 Á¢±Ù Á¦ÇÑÀÚ 66
3.2.4 ±× ¿ÜÀÇ ÀÚÁÖ ÀÌ¿ëÇÏ´Â ¼ö½ÄÀÚ 68
3.2.5 °è½Â 71
3.2.6 Ãß»ó Ŭ·¡½º 72
3.2.7 ÀÎÅÍÆäÀ̽º 74
3.2.8 À͸í Ŭ·¡½º 75
3.3 ŸÀÔ ÆÇÁ¤°ú °´Ã¼ÀÇ µî°¡¼º 77
3.3.1 instanceof ¿¬»êÀÚ 77
3.3.2 °´Ã¼ÀÇ µî°¡¼º 78
3.4 ŸÀÔ¿¡ °ü·ÃµÈ ¹®Á¦ ¿¹¹æÇϱâ 88
3.4.1 ¿°ÅÇü(enum) 88
3.4.2 Á¦³×¸¯½º(Generics) 91
CHAPTER 4 ¹è¿°ú Ä÷º¼Ç °ø·«Çϱâ 97
4.1 ¹è¿·Î ¿©·¯ µ¥ÀÌÅÍ Ã³¸®Çϱâ 98
4.1.1 ¹è¿À̶õ? 98
4.1.2 ¹è¿ ÃʱâÈÇϱâ 100
4.1.3 ¹è¿ÀÇ ´ëÀÔ°ú Ãëµæ 102
4.1.4 ¹è¿ÀÇ »çÀÌÁî º¯°æÇϱâ 104
4.1.5 Arrays Ŭ·¡½º¸¦ ÀÌ¿ëÇÏ¿© ¹è¿ Á¶ÀÛÇϱâ 105
4.1.6 °¡º¯ ±æÀÌ Àμö·Î ¸Þ¼µå Á¤ÀÇÇϱâ 111
4.2 Ä÷º¼Ç ÇÁ·¹ÀÓ¿öÅ©·Î ¿©·¯ µ¥ÀÌÅÍ Ã³¸®Çϱâ 113
4.2.1 ¹è¿ÀÇ ÇÑ°è¿Í Ä÷º¼ÇÀÇ Æ¯Â¡ 113
4.2.2 ´ëÇ¥ÀûÀÎ Ä÷º¼Ç°ú ±¸ºÐ ±âÁØ 113
4.3 ¹è¿°ú ºñ½ÁÇÑ ¹æ¹ýÀ¸·Î ¿©·¯ ¿ä¼Ò ó¸®Çϱâ ? List ÀÎÅÍÆäÀ̽º 115
4.3.1 List ÀÎÅÍÆäÀ̽ºÀÇ ±âº» 115
4.3.2 List ÀÛ¼ºÇϱâ 117
4.3.3 ListÀÇ ´ëÇ¥ÀûÀÎ ¸Þ¼µå 118
4.3.4 List Á¤·ÄÇϱâ 120
4.3.5 List °Ë»öÇϱâ 121
4.3.6 ListÀÇ ¹Ýº¹ÀÚ 122
4.3.7 ListÀÇ ¼¼ °¡Áö ±¸Çö Ŭ·¡½º ÀÌÇØÇϱâ 124
4.3.8 ListÀÇ ±¸Çö Ŭ·¡½º¸¦ ¾î¶»°Ô ºÐ·ùÇؼ »ç¿ëÇÒ±î? 127
4.4 Å°¿Í °ªÀÇ Á¶ÇÕÀ¸·Î °ª ó¸®Çϱâ ? Map ÀÎÅÍÆäÀ̽º 128
4.4.1 Map ÀÛ¼ºÇϱâ 129
4.4.2 Map »ç¿ë¹ý 130
4.4.3 MapÀÇ ¼¼ °¡Áö ±¸Çö Ŭ·¡½º ÀÌÇØÇϱâ 132
4.4.4 MapÀÇ ±¸Çö Ŭ·¡½º¸¦ ¾î¶»°Ô ºÐ·ùÇؼ »ç¿ëÇÒ±î? 134
4.5 °ªÀÇ ÁýÇÕ Ã³¸®Çϱâ ? Set ÀÎÅÍÆäÀ̽º 135
4.5.1 Set ÃʱâÈ 136
4.5.2 Set »ç¿ë¹ý 137
4.5.3 SetÀÇ ¼¼ °¡Áö ±¸Çö Ŭ·¡½º ÀÌÇØÇϱâ 139
4.6 ±× ¿ÜÀÇ ÀÎÅÍÆäÀ̽º 142
4.6.1 °ª À» Ãß°¡ÇÑ ¼ø¼¿Í µ¿ÀÏÇÑ ¼ø¼·Î °ª ÃëµæÇϱ⠡ª Queue ÀÎÅÍÆäÀ̽º 142
4.6.2 ¾ç¹æÇâ Queue »ç¿ëÇϱ⠡ª Deque ÀÎÅÍÆäÀ̽º 143
CHAPTER 5 ½ºÆ®¸² ó¸® Á¦´ë·Î »ç¿ëÇϱâ ? ¶÷´Ù½Ä°ú Stream API 145
5.1 Stream API¸¦ »ç¿ëÇϱâ À§ÇÑ ±âº» 146
5.1.1 Stream API·Î Ä÷º¼ÇÀÇ Á¶ÀÛÀº ¾î¶»°Ô º¯Çϴ°¡? 146
5.1.2 ¶÷´Ù½Ä ÀÛ¼º¹ý ¸¶½ºÅÍÇϱâ 148
5.1.3 ¸Þ¼µå ÂüÁ¶ 152
5.2 Stream ÀÛ¼ºÇϱâ 154
5.2.1 List³ª SetÀ¸·ÎºÎÅÍ Stream ÀÛ¼ºÇϱâ 154
5.2.2 ¹è¿·ÎºÎÅÍ Stream ÀÛ¼ºÇϱâ 155
5.2.3 MapÀ¸·ÎºÎÅÍ Stream ÀÛ¼ºÇϱâ 155
5.2.4 ¼ýÀÚ ¹üÀ§·ÎºÎÅÍ Stream ÀÛ¼ºÇϱâ 156
5.3 Stream¿¡ ´ëÇÑ ¡®Áß°£ ÀÛ¾÷¡¯ 158
5.3.1 ¿ä¼Ò¸¦ ġȯÇÏ´Â Áß°£ ÀÛ¾÷ 158
5.3.2 ¿ä¼Ò¸¦ °É·¯³»´Â Áß°£ ÀÛ¾÷ 162
5.3.4 ¿ä¼Ò¸¦ Á¤·ÄÇÏ´Â Áß°£ ÀÛ¾÷ 163
5.4 Stream¿¡ ´ëÇÑ ¡®Á¾·á ÀÛ¾÷¡¯ 165
5.4.1 ¹Ýº¹ 󸮸¦ ½Ç½ÃÇÏ´Â Á¾·á ÀÛ¾÷ 165
5.4.2 °á°ú¸¦ Á¤¸®Çؼ ÃßÃâÇÏ´Â Á¾·á ÀÛ¾÷ 165
5.4.3 °á°ú¸¦ Çϳª¸¸ ÃßÃâÇÏ´Â Á¾·á ÀÛ¾÷ 167
5.4.4 Áý°è 󸮸¦ ½Ç½ÃÇÏ´Â Á¾·á ÀÛ¾÷ 168
5.5 Stream API¸¦ »ç¿ëÇϱâ À§ÇÑ Æ÷ÀÎÆ® 169
5.5.1 ¿Õµµ´Â map, filter, collect 169
5.5.2 n¹ø ¹Ýº¹ÇÏ´Â IntStream 169
5.5.3 List³ª Map¿¡ ´ëÇÑ È¿À²ÀûÀΠó¸® ½Ç½ÃÇϱâ 171
5.6 Stream API¸¦ »ç¿ëÇÏ¿© List ÃʱâÈÇϱâ 174
5.6.1 StreamÀ» ÀÌ¿ëÇØ ¿°ÅÇÑ °ªÀ¸·Î List ÀÛ¼ºÇϱâ 174
5.6.2 StreamÀ» ÀÌ¿ëÇØ °ªÀÇ ¹üÀ§·ÎºÎÅÍ List ÀÛ¼ºÇϱâ 174
5.6.3 StreamÀ» ÀÌ¿ëÇØ ¹è¿ ÀÛ¼ºÇϱâ 175
CHAPTER 6 ¿¹¿Ü °ø·«Çϱâ 177
6.1 ¿¹¿ÜÀÇ ±âº» 178
6.1.1 ¿¹¿ÜÀÇ ¼¼ °¡Áö Á¾·ù 178
6.1.2 ¿¹¿Ü¸¦ ³ªÅ¸³»´Â ¼¼ °¡Áö Ŭ·¡½º 179
6.1.3 ¿¹¿Ü ó¸®ÀÇ ¼¼ °¡Áö ±¸¹® Á¦´ë·Î »ç¿ëÇϱâ 181
6.2 ¿¹¿Ü 󸮿¡¼ È¥¶õ¿¡ ºüÁöÁö ¾Ê±â À§ÇÑ Æ÷ÀÎÆ® 187
6.2.1 ¿À·ù Äڵ带 returnÇÏÁö ¾Ê±â 187
6.2.2 ¿¹¿Ü¸¦ Á¦°ÅÇÏÁö ¾Ê±â 188
6.2.3 °øÆ÷ÀÇ throws Exception °¨¿° 192
6.2.4 ¾î´À °èÃþ¿¡¼ ¿¹¿Ü¸¦ Æ÷ÂøÇؼ ó¸®ÇØ¾ß Çϴ°¡? 195
6.2.5 µ¶ÀÚÀûÀÎ ¿¹¿Ü ÀÛ¼ºÇϱâ 195
6.2.6 ¿¹¿ÜÀÇ Æ®·»µå 198
CHAPTER 7 ¹®ÀÚ¿ Á¶ÀÛ °ø·«Çϱâ 203
7.1 ¹®ÀÚ¿ Á¶ÀÛÀÇ ±âº» 204
7.1.1 String Ŭ·¡½ºÀÇ Æ¯Â¡ 204
7.1.2 ¹®ÀÚ¿À» °áÇÕÇÏ´Â ¼¼ °¡Áö ¹æ¹ý 205
7.1.3 ¹®ÀÚ¿ ºÐÇÒÇϱâ 208
7.1.4 ¿©·¯ ¹®ÀÚ¿ °áÇÕÇϱâ 210
7.1.5 ¹®ÀÚ¿ ġȯÇϱâ 211
7.1.6 ¹®ÀÚ¿ °Ë»öÇϱâ 211
7.2 Á¤±Ô Ç¥ÇöÀ¸·Î ¹®ÀÚ¿ À¯¿¬ÇÏ°Ô ÁöÁ¤Çϱâ 213
7.2.1 ¹®ÀÚ¿ÀÌ Á¤±Ô Ç¥Çö ÆÐÅÏ¿¡ ÀûÇÕÇÑÁö üũÇϱâ 213
7.2.2 Á¤±Ô Ç¥ÇöÀ» »ç¿ëÇÏ¿© ¹®ÀÚ¿ ºÐÇÒÇϱâ 214
7.2.3 Á¤±Ô Ç¥ÇöÀ» »ç¿ëÇÏ¿© ¹®ÀÚ¿ ġȯÇϱâ 215
7.2.4 String Ŭ·¡½ºÀÇ ¸Þ¼µå·Î Á¤±Ô Ç¥Çö »ç¿ëÇϱâ 216
7.3 ¹®ÀÚ¿ÀÇ Æ÷¸Ë°ú Ãâ·Â 218
7.3.1 ¹®ÀÚ¿ Ãâ·ÂÇϱâ 218
7.3.2 MessageFormat¿¡ ´ëÇؼ 219
7.4 ¹®ÀÚ ÄÚµå º¯È¯Çϱâ 221
7.4.1 ÀÚ¹Ù´Â ¾î¶»°Ô ¹®ÀÚ Äڵ带 ÀÌ¿ëÇϴ°¡? 221
7.4.2 ÀÚ¹Ù ¹®ÀÚ¿¡¼ ÀÓÀÇÀÇ ¹®ÀÚ ÄÚµå·Î º¯È¯Çϱâ 222
7.4.3 ÀÓÀÇÀÇ ¹®ÀÚ ÄÚµå·ÎºÎÅÍ ÀÚ¹Ù ¹®ÀÚ·Î º¯È¯Çϱâ 223
7.4.4 ¹®ÀÚ ±úÁüÀÇ ¿øÀΰú ´ëÃ¥ 223
7.4.5 String Ŭ·¡½ºÀÇ intern ¸Þ¼µå·Î °°Àº ¹®ÀÚ¿ ã±â 225
CHAPTER 8 ÆÄÀÏ Á¶ÀÛ °ø·«Çϱâ 227
8.1 ÆÄÀÏ Á¶ÀÛÀÇ ±âº» 228
8.1.1 File Ŭ·¡½º·Î ÃʱâÈÇϱâ 228
8.1.2 Path Ŭ·¡½º·Î ÃʱâÈÇϱâ 230
8.2 ÆÄÀÏ ÀÐ°í ¾²±â 234
8.2.1 ¹ÙÀ̳ʸ® ÆÄÀÏ ÀоîµéÀ̱â 234
8.2.2 ¹ÙÀ̳ʸ® ÆÄÀÏ ±â·ÏÇϱâ 237
8.2.3 ÅؽºÆ® ÆÄÀÏ ÀоîµéÀ̱â 239
8.2.4 ÅؽºÆ® ÆÄÀÏ ±â·ÏÇϱâ 241
8.2.5 Stream API¸¦ »ç¿ëÇؼ ÆÄÀÏ ÀоîµéÀ̱â 242
8.3 ÆÄÀÏ Á¶ÀÛÇϱâ 244
8.3.1 ÆÄÀÏ º¹»çÇϱâ 244
8.3.2 ÆÄÀÏ »èÁ¦Çϱâ 246
8.3.3 ÆÄÀÏ ÀÛ¼ºÇϱâ 247
8.3.4 µð·ºÅ͸® ÀÛ¼ºÇϱâ 248
8.3.5 Àӽà ÆÄÀÏ ÀÛ¼ºÇϱâ 250
8.4 ´Ù¾çÇÑ ÆÄÀÏ Ãë±ÞÇϱâ 253
8.4.1 ¼Ó¼º ÆÄÀÏ 253
8.4.2 CSV ÆÄÀÏ 257
8.4.3 XML ÆÄÀÏ 257
8.4.4 JSON ÆÄÀÏ 272
CHAPTER 9 ³¯Â¥ ó¸® °ø·«Çϱâ 275
9.1 Date¿Í Calendar ±¸ºÐÇÏ¿© »ç¿ëÇϱâ 276
9.1.1 Date Ŭ·¡½º ÀÌ¿ëÇϱâ 276
9.1.2 Calendar Ŭ·¡½º ÀÌ¿ëÇϱâ 277
9.1.3 Date Ŭ·¡½º¿Í Calendar Ŭ·¡½ºÀÇ »óÈ£ ±³È¯ ½Ç½ÃÇϱâ 281
9.2 Date and Time API »ç¿ëÇϱâ 283
9.2.1 Date and Time APIÀÇ ÀåÁ¡ 283
9.2.2 ³¯Â¥, ½Ã°£, ÀϽø¦ °¢°¢ º°µµÀÇ Å¬·¡½º·Î Ãë±ÞÇÑ´Ù 284
9.2.3 ¿¬, ¿ù, ÀÏ µîÀ» ÁöÁ¤ÇÏ¿© ÀνºÅϽº¸¦ »ý¼ºÇÒ ¼ö ÀÖ´Ù 285
9.2.4 ¿¬, ¿ù, ÀÏÀÇ °¢ Çʵ尪À» °³º°·Î ÃëµæÇÒ ¼ö ÀÖ´Ù 288
9.2.5 ¿¬, ¿ù, ÀÏÀ» °è»êÇÒ ¼ö ÀÖ´Ù 289
9.3 ³¯Â¥ Ŭ·¡½º¿Í ¹®ÀÚ¿ »óÈ£ ±³È¯Çϱâ 292
9.3.1 ³¯Â¥ Ŭ·¡½º¸¦ ÀÓÀÇÀÇ Çü½ÄÀ¸·Î ¹®ÀÚ¿ Ãâ·ÂÇϱâ 292
9.3.2 ¹®ÀÚ¿·Î Ç¥ÇöµÈ ³¯Â¥¸¦ Date Ŭ·¡½º·Î º¯È¯Çϱâ 293
9.3.3 SimpleDateFormat Ŭ·¡½º´Â ½º·¹µå ¼¼ÀÌÇÁ°¡ ¾Æ´Ï´Ù 294
9.4 Date and Time API·Î ³¯Â¥/½Ã°£ Ŭ·¡½º¿Í ¹®ÀÚ¿ »óÈ£ ±³È¯Çϱâ 295
9.4.1 ³¯Â¥/½Ã°£ Ŭ·¡½º¸¦ ÀÓÀÇÀÇ Çü½ÄÀ¸·Î ¹®ÀÚ¿ Ãâ·ÂÇϱâ 295
9.4.2 ¹®ÀÚ¿·Î Ç¥ÇöµÈ ³¯Â¥¸¦ ³¯Â¥/½Ã°£ Ŭ·¡½º·Î º¯È¯Çϱâ 296
9.4.3 DateTimeFormatter Ŭ·¡½º´Â ½º·¹µå ¼¼ÀÌÇÁ´Ù 296
CHAPTER 10 °´Ã¼ÁöÇâ Áñ±â±â 299
10.1 ±âº»Çü°ú ÂüÁ¶ÇüÀÇ °ª Àü´ÞÇϱâ 300
10.1.1 ±âº»Çü°ú ÂüÁ¶ÇüÀÇ °ª Àü´Þ ¹æ¹ý 300
10.1.2 Á¶ÀÛÇصµ °ªÀÌ º¯ÇÏÁö ¾Ê´Â ºÒº¯ °´Ã¼ Ŭ·¡½º 302
10.1.3 Á¶ÀÛÇÏ¸é °ªÀÌ º¯°æµÇ´Â º¯°æ °¡´É Ŭ·¡½º 304
10.1.4 º¯°æ °¡´ÉÇÑ Å¬·¡½ºÀÇ ÀåÁ¡°ú ´ÜÁ¡ 305
10.2 °¡½Ã¼ºÀ» ÀûÀýÈ÷ ¼³Á¤ÇÏ¿© ¹ö±×°¡ ÀûÀº ÇÁ·Î±×·¥ ¸¸µé±â 307
10.2.1 ÀÚ¹Ù°¡ »ç¿ëÇÒ ¼ö ÀÖ´Â °¡½Ã¼º 307
10.2.2 °¡½Ã¼ºÀÇ ÁÁÀº »ç·Ê 308
10.3 °´Ã¼ÀÇ ¶óÀÌÇÁ »çÀÌŬ ÆľÇÇϱâ 311
10.3.1 ¼¼ Á¾·ùÀÇ ¶óÀÌÇÁ »çÀÌŬ 311
10.3.2 ¶óÀÌÇÁ »çÀÌŬÀÇ ÁÁÀº »ç·Ê 312
10.4 ÀÎÅÍÆäÀ̽º¿Í Ãß»ó Ŭ·¡½º¸¦ È°¿ëÇÏ¿© ¼³°èÇϱâ 316
10.4.1 ´ÙÇü¼ºÀ» ½ÇÇöÇϱâ À§ÇÑ ¸ÞÄ¿´ÏÁò 316
10.4.2 ÀÎÅÍÆäÀ̽º¿Í Ãß»ó Ŭ·¡½º 317
10.4.3 ÀÎÅÍÆäÀ̽ºÀÇ µðÆúÆ® ±¸Çö 322
10.4.4 ÀÎÅÍÆäÀ̽ºÀÇ static ¸Þ¼µå 323
CHAPTER 11 ½º·¹µå ¼¼ÀÌÇÁ Áñ±â±â 329
11.1 ¸ÖƼ ½º·¹µåÀÇ ±âº» 330
11.1.1 ¸ÖƼ ½º·¹µå¶õ? 330
11.1.2 ¸ÖƼ ½º·¹µåÀÇ ÀåÁ¡ 331
11.1.3 ¸ÖƼ ½º·¹µåÀÇ ´ÜÁ¡ 334
11.1.4 µ¿½Ã¿¡ ÀÛ¾÷ÇÏ´Â °æ¿ì¿¡ ÀϾ´Â ¹®Á¦ 335
11.1.5 ¸ÖƼ ½º·¹µå ¹®Á¦¿¡ ´ëÀÀÇϱ⠾î·Á¿î ÀÌÀ¯ 339
11.2 ½º·¹µå ¼¼ÀÌÇÁ ±¸ÇöÇϱâ 340
11.2.1 ½º·¹µå ¼¼ÀÌÇÁ¶õ? 340
11.2.2 »óŸ¦ À¯ÁöÇÏÁö ¾Ê°Ô(Stateless) ÇÑ´Ù 349
11.2.3 ¡®¸Þ¼µå ´ÜÀ§¡¯°¡ ¾Æ´Ï¶ó ÃÖ¼ÒÇÑÀÇ ¡®ÀÏ·ÃÀÇ Ã³¸®¡¯¿¡ ´ëÇØ µ¿±âÈÇÑ´Ù 352
CHAPTER 12 µðÀÚÀÎ ÆÐÅÏ Áñ±â±â 357
12.1 µðÀÚÀÎ ÆÐÅÏÀÇ ±âº» 358
12.1.1 µðÀÚÀÎ ÆÐÅÏÀ̶õ? 358
12.1.2 µðÀÚÀÎ ÆÐÅÏÀ» »ç¿ëÇϸé ÁÁÀº Á¡ 359
12.2 »ý¼º¿¡ °üÇÑ ÆÐÅÏ 360
12.2.1 AbstractFactory ÆÐÅÏ ¡ª ÀÏ·ÃÀÇ ÀνºÅϽº±ºÀ» ¸ð¾Æ¼ »ý¼ºÇϱâ 360
12.2.2 Builder ÆÐÅÏ ¡ª º¹ÇÕÈµÈ ÀνºÅϽºÀÇ »ý¼º °úÁ¤À» ÀºÆóÇÑ´Ù 364
12.2.3 Singleton ÆÐÅÏ ¡ª ƯÁ¤ Ŭ·¡½º¿¡ ´ëÇØ ÀνºÅϽº°¡ ÇϳªÀÓÀ» º¸ÀåÇÑ´Ù 367
12.3 ±¸Á¶¿¡ °üÇÑ ÆÐÅÏ 369
12.3.1 Adapter ÆÐÅÏ ¡ª ÀÎÅÍÆäÀ̽º¿¡ ȣȯ¼ºÀÌ ¾ø´Â Ŭ·¡½ºµéÀ» Á¶ÇÕ½ÃÅ°±â 369
12.3.2 Composite ÆÐÅÏ ¡ª Àç±ÍÀû ±¸Á¶ ½±°Ô ó¸®Çϱâ 373
12.4 Çൿ¿¡ °üÇÑ ÆÐÅÏ 377
12.4.1 Command ÆÐÅÏ ¡ª ¡®¸í·É¡¯À» ÀνºÅϽº·Î Ãë±ÞÇÏ¿© ó¸® Á¶ÇÕÀ» ½±°Ô ÇÑ´Ù 377
12.4.2 Strategy ÆÐÅÏ ¡ª Àü·«À» °£´ÜÈ÷ ÀüȯÇÒ ¼ö ÀÖ´Â ±¸Á¶¸¦ Á¦°øÇÑ´Ù 380
12.4.3 Iterator ÆÐÅÏ ¡ª º¸À¯ÇÑ ÀνºÅϽºÀÇ °¢ ¿ä¼Ò¿¡ ¼øÂ÷ÀûÀ¸·Î ¾×¼¼½ºÇÏ´Â ¹æ¹ýÀ» Á¦°øÇÑ´Ù 383
12.4.4 Observer ÆÐÅÏ ¡ª ¾î¶² ÀνºÅϽºÀÇ »óÅ°¡ º¯ÈÇÒ ¶§ ±× ÀνºÅϽº ÀÚ½ÅÀÌ »óÅÂÀÇ º¯È¸¦ ÅëÁöÇÏ´Â ±¸Á¶¸¦ Á¦°øÇÑ´Ù 385
CHAPTER 13 ÁÖº¯ µµ±¸·Î Ç°Áú ³ôÀ̱â 389
13.1 MavenÀ¸·Î ºôµåÇϱâ 390
13.1.1 ºôµå¶õ? 390
13.1.2 MavenÀÇ ±âº»ÀûÀÎ ÀÌ¿ë ¹æ¹ý 391
13.1.3 Maven¿¡ Ç÷¯±×ÀÎ µµÀÔÇϱâ 396
13.2 JavadocÀ¸·Î ¹®¼È ÁÖ¼® ÀÛ¼ºÇϱâ 398
13.2.1 ¿Ö Javadoc ÁÖ¼®À» ÀÛ¼ºÇϴ°¡? 398
13.2.2 JavadocÀÇ ±âº»ÀûÀÎ ÀÛ¼º ¹æ¹ý 399
13.2.3 ¾Ë¾ÆµÎ¸é Æí¸®ÇÑ ÀÛ¼º ¹æ¹ý 401
13.2.4 API ¹®¼ ÀÛ¼ºÇϱâ 405
13.3 Checkstyle·Î Æ÷¸Ë üũÇϱâ 406
13.3.1 CheckstyleÀ̶õ? 406
13.3.2 ÀÌŬ¸³½º¿¡ ÀÇÇÑ Æ÷¸Ë üũ 407
13.3.3 Maven¿¡ ÀÇÇÑ Æ÷¸Ë üũ 409
13.4 FindBugs·Î ¹ö±× üũÇϱâ 410
13.4.1 ÀÌŬ¸³½º¿¡ ÀÇÇÑ ¹ö±× üũ 410
13.4.2 Maven¿¡ ÀÇÇÑ ¹ö±× üũ 412
13.5 JUnitÀ¸·Î Å×½ºÆ®Çϱâ 413
13.5.1 ¿Ö Å×½ºÆ®¿ë ÇÁ·Î±×·¥À» ¸¸µé¾î¼ Å×½ºÆ®ÇÒ±î? 413
13.5.2 Å×½ºÆ® ÄÚµå ±¸ÇöÇϱâ 414
13.5.3 Å×½ºÆ® ½ÇÇàÇϱâ 416
13.6 Jenkins·Î Ç°Áú º¸°í¼ ÀÛ¼ºÇϱâ 418
13.6.1 Áö¼ÓÀûÀÎ ÅëÇÕ°ú Jenkins 418
13.6.2 Jenkins ȯ°æ ÁغñÇϱâ 418
13.6.3 Jenkins¿¡¼ ºôµå ½ÇÇàÇϱâ 422
13.6.4 Jenkins¿¡¼ º¸°í¼ »ý¼ºÇϱâ 424
CHAPTER 14 ¶óÀ̺귯¸®·Î È¿À² ³ôÀ̱â 429
14.1 Àç»ç¿ë °¡´ÉÇÑ ÄÄÆ÷³ÍÆ®¸¦ ¸ðÀº Apache Commons 430
14.1.1 Commons Lang 430
14.1.2 Commons BeanUtils 433
14.1.3 ´Ü¼ø º¹»ç¿Í µö º¹»ç 434
14.2 CSV·Î ¿©·¯ µ¥ÀÌÅÍ º¸°üÇϱâ 437
14.2.1 CSV¶õ? 437
14.2.2 Super CSV·Î CSV º¯È¯À» È¿À²ÀûÀ¸·Î ½Ç½ÃÇϱâ 437
14.2.3 CSV µ¥ÀÌÅÍ ÀоîµéÀ̱â 438
14.2.4 CSV µ¥ÀÌÅÍ ¾²±â 439
14.3 JSONÀ¸·Î ±¸Á¶ÀûÀÎ µ¥ÀÌÅ͸¦ °£´ÜÇÏ°Ô Çϱâ 441
14.3.1 JSONÀ̶õ? 441
14.3.2 JacksonÀ¸·Î JSON Ãë±ÞÇϱâ 441
14.3.3 JSON µ¥ÀÌÅÍ ºÐ¼®Çϱâ 442
14.3.4 JSON µ¥ÀÌÅÍ »ý¼ºÇϱâ 443
14.4 Logger·Î ¾ÖÇø®ÄÉÀÌ¼Ç ·Î±× º¸°üÇϱâ 445
14.4.1 ·Î±×¿Í ·¹º§ 445
14.4.2 SLF4J LogbackÀ¸·Î ·Î±ë ½Ç½ÃÇϱâ 446
14.4.3 SLF4J LogbackÀÇ ±âº»ÀûÀÎ »ç¿ë¹ý 447
14.4.4 ÆÄÀÏ¿¡ Ãâ·ÂÇϱâ 449
14.4.5 º¯¼ö Ãâ·ÂÇϱâ 450
14.4.6 ÆÐÅ°Áöº°·Î Ãâ·Â ·Î±× ·¹º§ º¯°æÇϱâ 451
14.4.7 µ¿ÀûÀ¸·Î ¼³Á¤ º¯°æÇϱâ 451
°¨»çÀÇ ±Û 453
ã¾Æº¸±â 455
1.1 ÀÚ¹Ù¶õ? 2
1.1.1 ÀÚ¹ÙÀÇ Æ¯Â¡ 2
1.1.2 ÀÚ¹ÙÀÇ ¼¼ °¡Áö ¿¡µð¼Ç°ú µÎ °¡Áö ȯ°æ 3
1.1.3 Java VMÀÇ Á¾·ù 4
1.1.4 ÀÚ¹Ù°¡ ½ÇÇàµÇ´Â ¼ø¼ 4
1.2 ¡® Hello Java World!¡¯¸¦ Ç¥½ÃÇØ º¸ÀÚ 6
1.2.1 ÀÚ¹Ù ¼³Ä¡Çϱâ 6
1.2.2 ÀÌŬ¸³½º ¼³Ä¡Çϱâ 9
1.2.3 ¡®Hello Java World!¡¯ ÇÁ·Î±×·¥À» ¸¸µé¾î º¸ÀÚ 13
1.2.4 ÇÁ·Î±×·¥ ½ÇÇàÇϱâ 16
CHAPTER 2 ±âº»ÀûÀÎ ÀÛ¼º¹ý ÀÍÈ÷±â 17
2.1 ÀÚ¹ÙÀÇ ±âº»ÀûÀΠǥ±â¹ý 18
2.1.1 ¹®Àå°ú ºí·Ï 18
2.1.2 ÁÖ¼® 19
2.1.3 º¯¼ö, ŸÀÔ, ¸®ÅÍ·² 19
2.1.4 ¿¬»êÀÚ 20
2.1.5 Á¦¾î ±¸¹® 26
2.2 Ŭ·¡½º¿Í ¸Þ¼µå 34
2.2.1 Ŭ·¡½º ¼±¾ðÇϱâ 34
2.2.2 ¸Þ¼µå ¼±¾ðÇϱâ 34
2.2.3 ¼ö½ÄÀÚ 36
2.2.4 ¸Þ¼µå ¿À¹ö·Îµù 38
2.2.5 main ¸Þ¼µå 39
2.2.6 ÀνºÅϽº 39
2.2.7 this¸¦ »ç¿ëÇÒ ¶§ÀÇ ÁÖÀÇÁ¡ 41
2.2.8 »ý¼ºÀÚ 42
2.3 Á¤º¸ °øÀ¯¸¦ À§ÇØ ¾Ë¾ÆµÑ ±â´É 45
2.3.1 Javadoc 45
2.3.2 ¾Ö³ëÅ×ÀÌ¼Ç 46
2.4 ¸í¸í ±ÔÄ¢ 48
2.4.1 Ŭ·¡½º¿Í º¯¼ö´Â Ä«¸á ÄÉÀ̽º·Î, »ó¼ö´Â ½º³×ÀÌÅ© ÄÉÀ̽º·Î ÇÑ´Ù 48
2.4.2 º¯¼ö¸í µÚ¿¡´Â ¡®_¡¯¸¦ ºÙÀÌÁö ¾Ê´Â´Ù 49
2.4.3 º¯¼ö´Â ¸í»ç, ¸Þ¼µå´Â µ¿»ç·Î ¸í¸íÇÑ´Ù 49
2.4.4 ¡®ºÒ±æÇÑ ³¿»õ¡¯°¡ ³ª´Â À̸§¿¡ ÁÖÀÇÇÏÀÚ 50
CHAPTER 3 ŸÀÔ °ø·«Çϱâ 51
3.1 ±âº»Çü°ú ÂüÁ¶Çü 52
3.1.1 ÀÚ¹Ù´Â Á¤Àû ŸÀÔ ¾ð¾î 52
3.1.2 ±âº»Çü 53
3.1.3 ÂüÁ¶Çü 57
3.1.4 ·¡ÆÛ Å¬·¡½º 58
3.1.5 ¿ÀÅä¹Ú½Ì°ú ¾ð¹Ú½Ì 62
3.2 Ŭ·¡½º ÀÛ¼ºÇϱâ 64
3.2.1 Ŭ·¡½º Á¤ÀÇÇϱâ 64
3.2.2 ÆÐÅ°Áö 65
3.2.3 Á¢±Ù Á¦ÇÑÀÚ 66
3.2.4 ±× ¿ÜÀÇ ÀÚÁÖ ÀÌ¿ëÇÏ´Â ¼ö½ÄÀÚ 68
3.2.5 °è½Â 71
3.2.6 Ãß»ó Ŭ·¡½º 72
3.2.7 ÀÎÅÍÆäÀ̽º 74
3.2.8 À͸í Ŭ·¡½º 75
3.3 ŸÀÔ ÆÇÁ¤°ú °´Ã¼ÀÇ µî°¡¼º 77
3.3.1 instanceof ¿¬»êÀÚ 77
3.3.2 °´Ã¼ÀÇ µî°¡¼º 78
3.4 ŸÀÔ¿¡ °ü·ÃµÈ ¹®Á¦ ¿¹¹æÇϱâ 88
3.4.1 ¿°ÅÇü(enum) 88
3.4.2 Á¦³×¸¯½º(Generics) 91
CHAPTER 4 ¹è¿°ú Ä÷º¼Ç °ø·«Çϱâ 97
4.1 ¹è¿·Î ¿©·¯ µ¥ÀÌÅÍ Ã³¸®Çϱâ 98
4.1.1 ¹è¿À̶õ? 98
4.1.2 ¹è¿ ÃʱâÈÇϱâ 100
4.1.3 ¹è¿ÀÇ ´ëÀÔ°ú Ãëµæ 102
4.1.4 ¹è¿ÀÇ »çÀÌÁî º¯°æÇϱâ 104
4.1.5 Arrays Ŭ·¡½º¸¦ ÀÌ¿ëÇÏ¿© ¹è¿ Á¶ÀÛÇϱâ 105
4.1.6 °¡º¯ ±æÀÌ Àμö·Î ¸Þ¼µå Á¤ÀÇÇϱâ 111
4.2 Ä÷º¼Ç ÇÁ·¹ÀÓ¿öÅ©·Î ¿©·¯ µ¥ÀÌÅÍ Ã³¸®Çϱâ 113
4.2.1 ¹è¿ÀÇ ÇÑ°è¿Í Ä÷º¼ÇÀÇ Æ¯Â¡ 113
4.2.2 ´ëÇ¥ÀûÀÎ Ä÷º¼Ç°ú ±¸ºÐ ±âÁØ 113
4.3 ¹è¿°ú ºñ½ÁÇÑ ¹æ¹ýÀ¸·Î ¿©·¯ ¿ä¼Ò ó¸®Çϱâ ? List ÀÎÅÍÆäÀ̽º 115
4.3.1 List ÀÎÅÍÆäÀ̽ºÀÇ ±âº» 115
4.3.2 List ÀÛ¼ºÇϱâ 117
4.3.3 ListÀÇ ´ëÇ¥ÀûÀÎ ¸Þ¼µå 118
4.3.4 List Á¤·ÄÇϱâ 120
4.3.5 List °Ë»öÇϱâ 121
4.3.6 ListÀÇ ¹Ýº¹ÀÚ 122
4.3.7 ListÀÇ ¼¼ °¡Áö ±¸Çö Ŭ·¡½º ÀÌÇØÇϱâ 124
4.3.8 ListÀÇ ±¸Çö Ŭ·¡½º¸¦ ¾î¶»°Ô ºÐ·ùÇؼ »ç¿ëÇÒ±î? 127
4.4 Å°¿Í °ªÀÇ Á¶ÇÕÀ¸·Î °ª ó¸®Çϱâ ? Map ÀÎÅÍÆäÀ̽º 128
4.4.1 Map ÀÛ¼ºÇϱâ 129
4.4.2 Map »ç¿ë¹ý 130
4.4.3 MapÀÇ ¼¼ °¡Áö ±¸Çö Ŭ·¡½º ÀÌÇØÇϱâ 132
4.4.4 MapÀÇ ±¸Çö Ŭ·¡½º¸¦ ¾î¶»°Ô ºÐ·ùÇؼ »ç¿ëÇÒ±î? 134
4.5 °ªÀÇ ÁýÇÕ Ã³¸®Çϱâ ? Set ÀÎÅÍÆäÀ̽º 135
4.5.1 Set ÃʱâÈ 136
4.5.2 Set »ç¿ë¹ý 137
4.5.3 SetÀÇ ¼¼ °¡Áö ±¸Çö Ŭ·¡½º ÀÌÇØÇϱâ 139
4.6 ±× ¿ÜÀÇ ÀÎÅÍÆäÀ̽º 142
4.6.1 °ª À» Ãß°¡ÇÑ ¼ø¼¿Í µ¿ÀÏÇÑ ¼ø¼·Î °ª ÃëµæÇϱ⠡ª Queue ÀÎÅÍÆäÀ̽º 142
4.6.2 ¾ç¹æÇâ Queue »ç¿ëÇϱ⠡ª Deque ÀÎÅÍÆäÀ̽º 143
CHAPTER 5 ½ºÆ®¸² ó¸® Á¦´ë·Î »ç¿ëÇϱâ ? ¶÷´Ù½Ä°ú Stream API 145
5.1 Stream API¸¦ »ç¿ëÇϱâ À§ÇÑ ±âº» 146
5.1.1 Stream API·Î Ä÷º¼ÇÀÇ Á¶ÀÛÀº ¾î¶»°Ô º¯Çϴ°¡? 146
5.1.2 ¶÷´Ù½Ä ÀÛ¼º¹ý ¸¶½ºÅÍÇϱâ 148
5.1.3 ¸Þ¼µå ÂüÁ¶ 152
5.2 Stream ÀÛ¼ºÇϱâ 154
5.2.1 List³ª SetÀ¸·ÎºÎÅÍ Stream ÀÛ¼ºÇϱâ 154
5.2.2 ¹è¿·ÎºÎÅÍ Stream ÀÛ¼ºÇϱâ 155
5.2.3 MapÀ¸·ÎºÎÅÍ Stream ÀÛ¼ºÇϱâ 155
5.2.4 ¼ýÀÚ ¹üÀ§·ÎºÎÅÍ Stream ÀÛ¼ºÇϱâ 156
5.3 Stream¿¡ ´ëÇÑ ¡®Áß°£ ÀÛ¾÷¡¯ 158
5.3.1 ¿ä¼Ò¸¦ ġȯÇÏ´Â Áß°£ ÀÛ¾÷ 158
5.3.2 ¿ä¼Ò¸¦ °É·¯³»´Â Áß°£ ÀÛ¾÷ 162
5.3.4 ¿ä¼Ò¸¦ Á¤·ÄÇÏ´Â Áß°£ ÀÛ¾÷ 163
5.4 Stream¿¡ ´ëÇÑ ¡®Á¾·á ÀÛ¾÷¡¯ 165
5.4.1 ¹Ýº¹ 󸮸¦ ½Ç½ÃÇÏ´Â Á¾·á ÀÛ¾÷ 165
5.4.2 °á°ú¸¦ Á¤¸®Çؼ ÃßÃâÇÏ´Â Á¾·á ÀÛ¾÷ 165
5.4.3 °á°ú¸¦ Çϳª¸¸ ÃßÃâÇÏ´Â Á¾·á ÀÛ¾÷ 167
5.4.4 Áý°è 󸮸¦ ½Ç½ÃÇÏ´Â Á¾·á ÀÛ¾÷ 168
5.5 Stream API¸¦ »ç¿ëÇϱâ À§ÇÑ Æ÷ÀÎÆ® 169
5.5.1 ¿Õµµ´Â map, filter, collect 169
5.5.2 n¹ø ¹Ýº¹ÇÏ´Â IntStream 169
5.5.3 List³ª Map¿¡ ´ëÇÑ È¿À²ÀûÀΠó¸® ½Ç½ÃÇϱâ 171
5.6 Stream API¸¦ »ç¿ëÇÏ¿© List ÃʱâÈÇϱâ 174
5.6.1 StreamÀ» ÀÌ¿ëÇØ ¿°ÅÇÑ °ªÀ¸·Î List ÀÛ¼ºÇϱâ 174
5.6.2 StreamÀ» ÀÌ¿ëÇØ °ªÀÇ ¹üÀ§·ÎºÎÅÍ List ÀÛ¼ºÇϱâ 174
5.6.3 StreamÀ» ÀÌ¿ëÇØ ¹è¿ ÀÛ¼ºÇϱâ 175
CHAPTER 6 ¿¹¿Ü °ø·«Çϱâ 177
6.1 ¿¹¿ÜÀÇ ±âº» 178
6.1.1 ¿¹¿ÜÀÇ ¼¼ °¡Áö Á¾·ù 178
6.1.2 ¿¹¿Ü¸¦ ³ªÅ¸³»´Â ¼¼ °¡Áö Ŭ·¡½º 179
6.1.3 ¿¹¿Ü ó¸®ÀÇ ¼¼ °¡Áö ±¸¹® Á¦´ë·Î »ç¿ëÇϱâ 181
6.2 ¿¹¿Ü 󸮿¡¼ È¥¶õ¿¡ ºüÁöÁö ¾Ê±â À§ÇÑ Æ÷ÀÎÆ® 187
6.2.1 ¿À·ù Äڵ带 returnÇÏÁö ¾Ê±â 187
6.2.2 ¿¹¿Ü¸¦ Á¦°ÅÇÏÁö ¾Ê±â 188
6.2.3 °øÆ÷ÀÇ throws Exception °¨¿° 192
6.2.4 ¾î´À °èÃþ¿¡¼ ¿¹¿Ü¸¦ Æ÷ÂøÇؼ ó¸®ÇØ¾ß Çϴ°¡? 195
6.2.5 µ¶ÀÚÀûÀÎ ¿¹¿Ü ÀÛ¼ºÇϱâ 195
6.2.6 ¿¹¿ÜÀÇ Æ®·»µå 198
CHAPTER 7 ¹®ÀÚ¿ Á¶ÀÛ °ø·«Çϱâ 203
7.1 ¹®ÀÚ¿ Á¶ÀÛÀÇ ±âº» 204
7.1.1 String Ŭ·¡½ºÀÇ Æ¯Â¡ 204
7.1.2 ¹®ÀÚ¿À» °áÇÕÇÏ´Â ¼¼ °¡Áö ¹æ¹ý 205
7.1.3 ¹®ÀÚ¿ ºÐÇÒÇϱâ 208
7.1.4 ¿©·¯ ¹®ÀÚ¿ °áÇÕÇϱâ 210
7.1.5 ¹®ÀÚ¿ ġȯÇϱâ 211
7.1.6 ¹®ÀÚ¿ °Ë»öÇϱâ 211
7.2 Á¤±Ô Ç¥ÇöÀ¸·Î ¹®ÀÚ¿ À¯¿¬ÇÏ°Ô ÁöÁ¤Çϱâ 213
7.2.1 ¹®ÀÚ¿ÀÌ Á¤±Ô Ç¥Çö ÆÐÅÏ¿¡ ÀûÇÕÇÑÁö üũÇϱâ 213
7.2.2 Á¤±Ô Ç¥ÇöÀ» »ç¿ëÇÏ¿© ¹®ÀÚ¿ ºÐÇÒÇϱâ 214
7.2.3 Á¤±Ô Ç¥ÇöÀ» »ç¿ëÇÏ¿© ¹®ÀÚ¿ ġȯÇϱâ 215
7.2.4 String Ŭ·¡½ºÀÇ ¸Þ¼µå·Î Á¤±Ô Ç¥Çö »ç¿ëÇϱâ 216
7.3 ¹®ÀÚ¿ÀÇ Æ÷¸Ë°ú Ãâ·Â 218
7.3.1 ¹®ÀÚ¿ Ãâ·ÂÇϱâ 218
7.3.2 MessageFormat¿¡ ´ëÇؼ 219
7.4 ¹®ÀÚ ÄÚµå º¯È¯Çϱâ 221
7.4.1 ÀÚ¹Ù´Â ¾î¶»°Ô ¹®ÀÚ Äڵ带 ÀÌ¿ëÇϴ°¡? 221
7.4.2 ÀÚ¹Ù ¹®ÀÚ¿¡¼ ÀÓÀÇÀÇ ¹®ÀÚ ÄÚµå·Î º¯È¯Çϱâ 222
7.4.3 ÀÓÀÇÀÇ ¹®ÀÚ ÄÚµå·ÎºÎÅÍ ÀÚ¹Ù ¹®ÀÚ·Î º¯È¯Çϱâ 223
7.4.4 ¹®ÀÚ ±úÁüÀÇ ¿øÀΰú ´ëÃ¥ 223
7.4.5 String Ŭ·¡½ºÀÇ intern ¸Þ¼µå·Î °°Àº ¹®ÀÚ¿ ã±â 225
CHAPTER 8 ÆÄÀÏ Á¶ÀÛ °ø·«Çϱâ 227
8.1 ÆÄÀÏ Á¶ÀÛÀÇ ±âº» 228
8.1.1 File Ŭ·¡½º·Î ÃʱâÈÇϱâ 228
8.1.2 Path Ŭ·¡½º·Î ÃʱâÈÇϱâ 230
8.2 ÆÄÀÏ ÀÐ°í ¾²±â 234
8.2.1 ¹ÙÀ̳ʸ® ÆÄÀÏ ÀоîµéÀ̱â 234
8.2.2 ¹ÙÀ̳ʸ® ÆÄÀÏ ±â·ÏÇϱâ 237
8.2.3 ÅؽºÆ® ÆÄÀÏ ÀоîµéÀ̱â 239
8.2.4 ÅؽºÆ® ÆÄÀÏ ±â·ÏÇϱâ 241
8.2.5 Stream API¸¦ »ç¿ëÇؼ ÆÄÀÏ ÀоîµéÀ̱â 242
8.3 ÆÄÀÏ Á¶ÀÛÇϱâ 244
8.3.1 ÆÄÀÏ º¹»çÇϱâ 244
8.3.2 ÆÄÀÏ »èÁ¦Çϱâ 246
8.3.3 ÆÄÀÏ ÀÛ¼ºÇϱâ 247
8.3.4 µð·ºÅ͸® ÀÛ¼ºÇϱâ 248
8.3.5 Àӽà ÆÄÀÏ ÀÛ¼ºÇϱâ 250
8.4 ´Ù¾çÇÑ ÆÄÀÏ Ãë±ÞÇϱâ 253
8.4.1 ¼Ó¼º ÆÄÀÏ 253
8.4.2 CSV ÆÄÀÏ 257
8.4.3 XML ÆÄÀÏ 257
8.4.4 JSON ÆÄÀÏ 272
CHAPTER 9 ³¯Â¥ ó¸® °ø·«Çϱâ 275
9.1 Date¿Í Calendar ±¸ºÐÇÏ¿© »ç¿ëÇϱâ 276
9.1.1 Date Ŭ·¡½º ÀÌ¿ëÇϱâ 276
9.1.2 Calendar Ŭ·¡½º ÀÌ¿ëÇϱâ 277
9.1.3 Date Ŭ·¡½º¿Í Calendar Ŭ·¡½ºÀÇ »óÈ£ ±³È¯ ½Ç½ÃÇϱâ 281
9.2 Date and Time API »ç¿ëÇϱâ 283
9.2.1 Date and Time APIÀÇ ÀåÁ¡ 283
9.2.2 ³¯Â¥, ½Ã°£, ÀϽø¦ °¢°¢ º°µµÀÇ Å¬·¡½º·Î Ãë±ÞÇÑ´Ù 284
9.2.3 ¿¬, ¿ù, ÀÏ µîÀ» ÁöÁ¤ÇÏ¿© ÀνºÅϽº¸¦ »ý¼ºÇÒ ¼ö ÀÖ´Ù 285
9.2.4 ¿¬, ¿ù, ÀÏÀÇ °¢ Çʵ尪À» °³º°·Î ÃëµæÇÒ ¼ö ÀÖ´Ù 288
9.2.5 ¿¬, ¿ù, ÀÏÀ» °è»êÇÒ ¼ö ÀÖ´Ù 289
9.3 ³¯Â¥ Ŭ·¡½º¿Í ¹®ÀÚ¿ »óÈ£ ±³È¯Çϱâ 292
9.3.1 ³¯Â¥ Ŭ·¡½º¸¦ ÀÓÀÇÀÇ Çü½ÄÀ¸·Î ¹®ÀÚ¿ Ãâ·ÂÇϱâ 292
9.3.2 ¹®ÀÚ¿·Î Ç¥ÇöµÈ ³¯Â¥¸¦ Date Ŭ·¡½º·Î º¯È¯Çϱâ 293
9.3.3 SimpleDateFormat Ŭ·¡½º´Â ½º·¹µå ¼¼ÀÌÇÁ°¡ ¾Æ´Ï´Ù 294
9.4 Date and Time API·Î ³¯Â¥/½Ã°£ Ŭ·¡½º¿Í ¹®ÀÚ¿ »óÈ£ ±³È¯Çϱâ 295
9.4.1 ³¯Â¥/½Ã°£ Ŭ·¡½º¸¦ ÀÓÀÇÀÇ Çü½ÄÀ¸·Î ¹®ÀÚ¿ Ãâ·ÂÇϱâ 295
9.4.2 ¹®ÀÚ¿·Î Ç¥ÇöµÈ ³¯Â¥¸¦ ³¯Â¥/½Ã°£ Ŭ·¡½º·Î º¯È¯Çϱâ 296
9.4.3 DateTimeFormatter Ŭ·¡½º´Â ½º·¹µå ¼¼ÀÌÇÁ´Ù 296
CHAPTER 10 °´Ã¼ÁöÇâ Áñ±â±â 299
10.1 ±âº»Çü°ú ÂüÁ¶ÇüÀÇ °ª Àü´ÞÇϱâ 300
10.1.1 ±âº»Çü°ú ÂüÁ¶ÇüÀÇ °ª Àü´Þ ¹æ¹ý 300
10.1.2 Á¶ÀÛÇصµ °ªÀÌ º¯ÇÏÁö ¾Ê´Â ºÒº¯ °´Ã¼ Ŭ·¡½º 302
10.1.3 Á¶ÀÛÇÏ¸é °ªÀÌ º¯°æµÇ´Â º¯°æ °¡´É Ŭ·¡½º 304
10.1.4 º¯°æ °¡´ÉÇÑ Å¬·¡½ºÀÇ ÀåÁ¡°ú ´ÜÁ¡ 305
10.2 °¡½Ã¼ºÀ» ÀûÀýÈ÷ ¼³Á¤ÇÏ¿© ¹ö±×°¡ ÀûÀº ÇÁ·Î±×·¥ ¸¸µé±â 307
10.2.1 ÀÚ¹Ù°¡ »ç¿ëÇÒ ¼ö ÀÖ´Â °¡½Ã¼º 307
10.2.2 °¡½Ã¼ºÀÇ ÁÁÀº »ç·Ê 308
10.3 °´Ã¼ÀÇ ¶óÀÌÇÁ »çÀÌŬ ÆľÇÇϱâ 311
10.3.1 ¼¼ Á¾·ùÀÇ ¶óÀÌÇÁ »çÀÌŬ 311
10.3.2 ¶óÀÌÇÁ »çÀÌŬÀÇ ÁÁÀº »ç·Ê 312
10.4 ÀÎÅÍÆäÀ̽º¿Í Ãß»ó Ŭ·¡½º¸¦ È°¿ëÇÏ¿© ¼³°èÇϱâ 316
10.4.1 ´ÙÇü¼ºÀ» ½ÇÇöÇϱâ À§ÇÑ ¸ÞÄ¿´ÏÁò 316
10.4.2 ÀÎÅÍÆäÀ̽º¿Í Ãß»ó Ŭ·¡½º 317
10.4.3 ÀÎÅÍÆäÀ̽ºÀÇ µðÆúÆ® ±¸Çö 322
10.4.4 ÀÎÅÍÆäÀ̽ºÀÇ static ¸Þ¼µå 323
CHAPTER 11 ½º·¹µå ¼¼ÀÌÇÁ Áñ±â±â 329
11.1 ¸ÖƼ ½º·¹µåÀÇ ±âº» 330
11.1.1 ¸ÖƼ ½º·¹µå¶õ? 330
11.1.2 ¸ÖƼ ½º·¹µåÀÇ ÀåÁ¡ 331
11.1.3 ¸ÖƼ ½º·¹µåÀÇ ´ÜÁ¡ 334
11.1.4 µ¿½Ã¿¡ ÀÛ¾÷ÇÏ´Â °æ¿ì¿¡ ÀϾ´Â ¹®Á¦ 335
11.1.5 ¸ÖƼ ½º·¹µå ¹®Á¦¿¡ ´ëÀÀÇϱ⠾î·Á¿î ÀÌÀ¯ 339
11.2 ½º·¹µå ¼¼ÀÌÇÁ ±¸ÇöÇϱâ 340
11.2.1 ½º·¹µå ¼¼ÀÌÇÁ¶õ? 340
11.2.2 »óŸ¦ À¯ÁöÇÏÁö ¾Ê°Ô(Stateless) ÇÑ´Ù 349
11.2.3 ¡®¸Þ¼µå ´ÜÀ§¡¯°¡ ¾Æ´Ï¶ó ÃÖ¼ÒÇÑÀÇ ¡®ÀÏ·ÃÀÇ Ã³¸®¡¯¿¡ ´ëÇØ µ¿±âÈÇÑ´Ù 352
CHAPTER 12 µðÀÚÀÎ ÆÐÅÏ Áñ±â±â 357
12.1 µðÀÚÀÎ ÆÐÅÏÀÇ ±âº» 358
12.1.1 µðÀÚÀÎ ÆÐÅÏÀ̶õ? 358
12.1.2 µðÀÚÀÎ ÆÐÅÏÀ» »ç¿ëÇϸé ÁÁÀº Á¡ 359
12.2 »ý¼º¿¡ °üÇÑ ÆÐÅÏ 360
12.2.1 AbstractFactory ÆÐÅÏ ¡ª ÀÏ·ÃÀÇ ÀνºÅϽº±ºÀ» ¸ð¾Æ¼ »ý¼ºÇϱâ 360
12.2.2 Builder ÆÐÅÏ ¡ª º¹ÇÕÈµÈ ÀνºÅϽºÀÇ »ý¼º °úÁ¤À» ÀºÆóÇÑ´Ù 364
12.2.3 Singleton ÆÐÅÏ ¡ª ƯÁ¤ Ŭ·¡½º¿¡ ´ëÇØ ÀνºÅϽº°¡ ÇϳªÀÓÀ» º¸ÀåÇÑ´Ù 367
12.3 ±¸Á¶¿¡ °üÇÑ ÆÐÅÏ 369
12.3.1 Adapter ÆÐÅÏ ¡ª ÀÎÅÍÆäÀ̽º¿¡ ȣȯ¼ºÀÌ ¾ø´Â Ŭ·¡½ºµéÀ» Á¶ÇÕ½ÃÅ°±â 369
12.3.2 Composite ÆÐÅÏ ¡ª Àç±ÍÀû ±¸Á¶ ½±°Ô ó¸®Çϱâ 373
12.4 Çൿ¿¡ °üÇÑ ÆÐÅÏ 377
12.4.1 Command ÆÐÅÏ ¡ª ¡®¸í·É¡¯À» ÀνºÅϽº·Î Ãë±ÞÇÏ¿© ó¸® Á¶ÇÕÀ» ½±°Ô ÇÑ´Ù 377
12.4.2 Strategy ÆÐÅÏ ¡ª Àü·«À» °£´ÜÈ÷ ÀüȯÇÒ ¼ö ÀÖ´Â ±¸Á¶¸¦ Á¦°øÇÑ´Ù 380
12.4.3 Iterator ÆÐÅÏ ¡ª º¸À¯ÇÑ ÀνºÅϽºÀÇ °¢ ¿ä¼Ò¿¡ ¼øÂ÷ÀûÀ¸·Î ¾×¼¼½ºÇÏ´Â ¹æ¹ýÀ» Á¦°øÇÑ´Ù 383
12.4.4 Observer ÆÐÅÏ ¡ª ¾î¶² ÀνºÅϽºÀÇ »óÅ°¡ º¯ÈÇÒ ¶§ ±× ÀνºÅϽº ÀÚ½ÅÀÌ »óÅÂÀÇ º¯È¸¦ ÅëÁöÇÏ´Â ±¸Á¶¸¦ Á¦°øÇÑ´Ù 385
CHAPTER 13 ÁÖº¯ µµ±¸·Î Ç°Áú ³ôÀ̱â 389
13.1 MavenÀ¸·Î ºôµåÇϱâ 390
13.1.1 ºôµå¶õ? 390
13.1.2 MavenÀÇ ±âº»ÀûÀÎ ÀÌ¿ë ¹æ¹ý 391
13.1.3 Maven¿¡ Ç÷¯±×ÀÎ µµÀÔÇϱâ 396
13.2 JavadocÀ¸·Î ¹®¼È ÁÖ¼® ÀÛ¼ºÇϱâ 398
13.2.1 ¿Ö Javadoc ÁÖ¼®À» ÀÛ¼ºÇϴ°¡? 398
13.2.2 JavadocÀÇ ±âº»ÀûÀÎ ÀÛ¼º ¹æ¹ý 399
13.2.3 ¾Ë¾ÆµÎ¸é Æí¸®ÇÑ ÀÛ¼º ¹æ¹ý 401
13.2.4 API ¹®¼ ÀÛ¼ºÇϱâ 405
13.3 Checkstyle·Î Æ÷¸Ë üũÇϱâ 406
13.3.1 CheckstyleÀ̶õ? 406
13.3.2 ÀÌŬ¸³½º¿¡ ÀÇÇÑ Æ÷¸Ë üũ 407
13.3.3 Maven¿¡ ÀÇÇÑ Æ÷¸Ë üũ 409
13.4 FindBugs·Î ¹ö±× üũÇϱâ 410
13.4.1 ÀÌŬ¸³½º¿¡ ÀÇÇÑ ¹ö±× üũ 410
13.4.2 Maven¿¡ ÀÇÇÑ ¹ö±× üũ 412
13.5 JUnitÀ¸·Î Å×½ºÆ®Çϱâ 413
13.5.1 ¿Ö Å×½ºÆ®¿ë ÇÁ·Î±×·¥À» ¸¸µé¾î¼ Å×½ºÆ®ÇÒ±î? 413
13.5.2 Å×½ºÆ® ÄÚµå ±¸ÇöÇϱâ 414
13.5.3 Å×½ºÆ® ½ÇÇàÇϱâ 416
13.6 Jenkins·Î Ç°Áú º¸°í¼ ÀÛ¼ºÇϱâ 418
13.6.1 Áö¼ÓÀûÀÎ ÅëÇÕ°ú Jenkins 418
13.6.2 Jenkins ȯ°æ ÁغñÇϱâ 418
13.6.3 Jenkins¿¡¼ ºôµå ½ÇÇàÇϱâ 422
13.6.4 Jenkins¿¡¼ º¸°í¼ »ý¼ºÇϱâ 424
CHAPTER 14 ¶óÀ̺귯¸®·Î È¿À² ³ôÀ̱â 429
14.1 Àç»ç¿ë °¡´ÉÇÑ ÄÄÆ÷³ÍÆ®¸¦ ¸ðÀº Apache Commons 430
14.1.1 Commons Lang 430
14.1.2 Commons BeanUtils 433
14.1.3 ´Ü¼ø º¹»ç¿Í µö º¹»ç 434
14.2 CSV·Î ¿©·¯ µ¥ÀÌÅÍ º¸°üÇϱâ 437
14.2.1 CSV¶õ? 437
14.2.2 Super CSV·Î CSV º¯È¯À» È¿À²ÀûÀ¸·Î ½Ç½ÃÇϱâ 437
14.2.3 CSV µ¥ÀÌÅÍ ÀоîµéÀ̱â 438
14.2.4 CSV µ¥ÀÌÅÍ ¾²±â 439
14.3 JSONÀ¸·Î ±¸Á¶ÀûÀÎ µ¥ÀÌÅ͸¦ °£´ÜÇÏ°Ô Çϱâ 441
14.3.1 JSONÀ̶õ? 441
14.3.2 JacksonÀ¸·Î JSON Ãë±ÞÇϱâ 441
14.3.3 JSON µ¥ÀÌÅÍ ºÐ¼®Çϱâ 442
14.3.4 JSON µ¥ÀÌÅÍ »ý¼ºÇϱâ 443
14.4 Logger·Î ¾ÖÇø®ÄÉÀÌ¼Ç ·Î±× º¸°üÇϱâ 445
14.4.1 ·Î±×¿Í ·¹º§ 445
14.4.2 SLF4J LogbackÀ¸·Î ·Î±ë ½Ç½ÃÇϱâ 446
14.4.3 SLF4J LogbackÀÇ ±âº»ÀûÀÎ »ç¿ë¹ý 447
14.4.4 ÆÄÀÏ¿¡ Ãâ·ÂÇϱâ 449
14.4.5 º¯¼ö Ãâ·ÂÇϱâ 450
14.4.6 ÆÐÅ°Áöº°·Î Ãâ·Â ·Î±× ·¹º§ º¯°æÇϱâ 451
14.4.7 µ¿ÀûÀ¸·Î ¼³Á¤ º¯°æÇϱâ 451
°¨»çÀÇ ±Û 453
ã¾Æº¸±â 455
±âÃÊ ¹®¹ýÀº ¹°·Ð, ¿Ïº®ÇÑ ÇöÀå ´ëÀÀÀ» À§ÇÑ ¸ÂÃ㠾ȳ»¼!
ÀÌ Ã¥Àº ½Ã½ºÅÛ °³¹ßÀÇ ÇÙ½É ºÐ¾ß¿¡¼ ÀÚ¹Ù¸¦ »ç¿ëÇØ ¿Â Acroquest TechnologyÀÇ °³¹ßÀÚµéÀÌ 20¿© ³âÀÇ °³¹ß °æÇè°ú ¹®Á¦ ÇØ°á ³ëÇϿ츦 Åä´ë·Î ÁýÇÊÇÑ Ã¥ÀÌ´Ù. ÀÚ¹ÙÀÇ ±âÃʺÎÅÍ ½ÇÀü±îÁö ü°èÀûÀ¸·Î ¼³¸íÇÏ°í ÀÖÀ¸¸ç, ƯÈ÷ ÀÚ¹Ù ÇÁ·Î±×·¡¹Ö¿¡¼ÀÇ À¯Áöº¸¼ö, °ß°í¼º, ¼º´É, °³¹ß È¿À² µîÀ» °í·ÁÇØ ÇÑÃþ ´õ ½ÇÀü¿¡ È°¿ëÇÒ ¼ö ÀÖ´Â ³»¿ëÀ¸·Î ±¸¼ºÇÏ¿´´Ù.
½ÇÀü¿¡¼ÀÇ È°¿ë ¹æ¹ýÀ» ´õ ¾Ë°í ½ÍÀº ÀÚ¹Ù °³¹ßÀÚ³ª ´Ù¸¥ ¾ð¾î¿¡ ´ëÇÑ °æÇèÀº ÀÖÀ¸³ª Àڹٴ óÀ½ÀÎ µ¶Àڵ鿡°Ô ÀÌ Ã¥ÀÌ ½ÇÀü ÀÚ¹Ù ÇÁ·Î±×·¡¹Ö ´É·ÂÀ» Å°¿ì´Â µ¥ ¸¹Àº µµ¿òÀÌ µÉ °ÍÀÌ´Ù.
ÀÌ Ã¥ÀÇ ÁÖ¿ä ³»¿ë
¤ýÀÚ¹ÙÀÇ ±âº» °³³ä°ú ÀÛ¼º¹ý
¤ý°´Ã¼ÁöÇâ ÇÁ·Î±×·¡¹Ö°ú µðÀÚÀÎ ÆÐÅÏ
¤ý½Ç¿ëÀûÀÎ ¶óÀ̺귯¸®
¤ý½Ã³ÊÁö¸¦ ÁÖ´Â ÀÚ¹Ù ÁÖº¯ µµ±¸
¤ýÇöÀå ´ëÀÀ ³ëÇÏ¿ì