ȸ¿ø°¡ÀԡžÆÀ̵ð/ºñ¹øã±â
ȨÀ¸·Î

¾Èµå·ÎÀÌµå ¼º´ÉÀ» À§ÇÑ ¼³°è
7³â Àü
±¸±Û ¾Èµå·ÎÀ̵å(Google Android)ÀÇ ¹®¼­¸¦ Çϳª ¹ø¿ªÇØ º¸¾Ò½À´Ï´Ù.

¿ø¹®:http://developer.android.com/guide/practices/design/performance.html




¼º´ÉÀ» À§ÇÑ ¼³°è



¾Èµå·ÎÀÌµå ¾ÖÇø®ÄÉÀ̼ÇÀÇ ¼Óµµ´Â »¡¶ó¾ß¸¸ ÇÕ´Ï´Ù. À½, È¿À²ÀûÀ̾î¾ß ÇÑ´Ù°í ¸»ÇÏ´Â ÂÊÀÌ ´õ Á¤È®ÇÒ µí½Í³×¿ä. ´Ù½Ã ¸»ÇØ, Á¦ÇÑµÈ ÄÄÇ»Æà ÆÄ¿ö¿Í µ¥ÀÌÅÍ ÀúÀå¼Ò, ÀÛÀº È­¸é, °©°©ÇÑ ¹èÅ͸® ¼ö¸í °°Àº ¸ð¹ÙÀÏ ÀåÄ¡ ȯ°æ¿¡¼­ °¡´ÉÇÑ ÇÑ È¿À²ÀûÀ¸·Î ½ÇÇàµÇ¾î¾ß ÇÑ´Ù´Â °ÍÀÔ´Ï´Ù.


¾ÖÇø®ÄÉÀ̼ÇÀ» °³¹ßÇÒ ¶§¿¡´Â ÀÌ°ÍÀ» ¸í½ÉÇϼ¼¿ä. µà¾óÄÚ¾î °³¹ß ÄÄÇ»ÅÍ¿¡¼­ ½ÇÇàÇÏ´Â ¿¡¹Ä·¹ÀÌÅÍ¿¡¼­´Â ÃæºÐÈ÷ Àß ÀÛµ¿ÇÒÁöµµ ¸ð¸£Áö¸¸, ¸ð¹ÙÀÏ ±â±â¿¡¼­ ½ÇÇàÇÒ ¶§¿£ ±×¸® Àß µÇÁö ¾ÊÀ» °ÍÀÔ´Ï´Ù. — ÃÖ°í ¼º´ÉÀÇ ¸ð¹ÙÀÏ ±â±â¶óµµ ÀϹÝÀûÀÎ µ¥½ºÅ©Å¾ ½Ã½ºÅÛÀÇ ¼º´ÉÀ» µû¶óÀâÀ» ¼ö´Â ¾ø½À´Ï´Ù. ±×·± ÀÌÀ¯·Î, ´Ù¾çÇÑ ¸ð¹ÙÀÏ ±â±âµé¿¡°Ô ÃÖ»óÀÇ ¼º´ÉÀ» º¸ÀåÇϱâ À§ÇØ ¿©·¯ºÐÀº È¿À²ÀûÀÎ Äڵ带 ÀÛ¼ºÇϵµ·Ï ¿­½ÉÈ÷ ³ë·ÂÇÏ¼Å¾ß ÇÕ´Ï´Ù.



ÀϹÝÀûÀ¸·Î, ºü¸£°Å³ª È¿À²ÀûÀÎ ÄÚµå¶ó´Â °ÍÀº ¸Þ¸ð¸® ÇÒ´çÀ» ÃÖ¼ÒÈ­ ÇÏ°í, ²Ë Â¥ÀÎ Äڵ带 ÀÛ¼ºÇÏ°í, ƯÁ¤ ÇÁ·Î±×·¡¹Ö ¾ð¾î³ª ÀáÀçÀûÀ¸·Î ¼º´É»ó ¹®Á¦°¡ µÉ¸¸ÇÑ ÇÁ·Î±×·¡¹Ö ¾î¹ýµéÀ» ÇÇÇÏ´Â °ÍÀ» ¸»ÇÕ´Ï´Ù. °´Ã¼ÁöÇâ ¿ë¾î·Î ¸»ÇÏÀÚ¸é, ÀÌ·¯ÇÑ ÀÏÀÌ °¡Àå ºó¹øÈ÷ ÀϾ´Â °÷Àº ¸Þ¼Òµå ·¹º§À̸ç, ÀÌ¿Í ºñ½ÁÇÏ°Ô ½ÇÁ¦ ÄÚµå ¶óÀεé°ú ¹Ýº¹¹® µî¿¡¼­ ¹ß»ýÇÕ´Ï´Ù .

ÀÌ ¹®¼­´Â ´ÙÀ½ ÁÖÁ¦µéÀ» ´Ù·ì´Ï´Ù:
•¼Ò°³
•°´Ã¼ »ý¼ºÀ» ÇÇÇ϶ó
•³×ÀÌƼºê ¸Þ¼Òµå¸¦ »ç¿ëÇ϶ó
•ÀÎÅÍÆäÀ̽ºº¸´Ù °¡»ó ¿¬°áÀ» ¼±È£Ç϶ó
•°¡»ó ¿¬°áº¸´Ù Á¤Àû ¿¬°áÀ» ¼±È£Ç϶ó
•³»ºÎ¿¡¼­ Getter/Setter »ç¿ëÀ» ÇÇÇ϶ó
•Çʵå ÂüÁ¶µéÀ» ij½ÃÇ϶ó
•»ó¼ö¸¦ Final·Î ¼±¾ðÇ϶ó
•ÁÖÀÇ ±í°Ô Çâ»óµÈ ¹Ýº¹¹®(Enhanced For Loop)À» »ç¿ëÇ϶ó
•¿­°ÅÇü(Enum)À» ÇÇÇ϶ó
•³»ºÎ Ŭ·¡½º¿Í ÇÔ²² ÆÐÅ°Áö ¹üÀ§¸¦ »ç¿ëÇ϶ó
•Float¸¦ ÇÇÇ϶ó
•¼º´É ¿¹½Ã ¼ýÀÚ ¸î °³
•¸Î´Â ¸»




¼Ò°³

ÀÚ¿ø Á¦ÇÑÀû ½Ã½ºÅÛ¿¡´Â µÎ °¡Áö ±âº» ±ÔÄ¢ÀÌ ÀÖ½À´Ï´Ù:
•ÇÊ¿ä ¾ø´Â ÀÏÀº ÇÏÁö ¸» °Í
•¸Þ¸ð¸® ÇÒ´çÀ» ÇÇÇÒ ¼ö ÀÖ´Ù¸é ±×·¸°Ô ÇÒ °Í

¾Æ·¡ÀÇ ¸ðµç ÆÁµéÀº ÀÌ µÎ °¡Áö ±âº» ÁÖÀǸ¦ µû¸£°í ÀÖ½À´Ï´Ù.



´©±º°¡´Â ÀÌ ÆäÀÌÁö»óÀÇ ¸¹Àº Á¶¾ðÀÌ "¼²ºÎ¸¥ ÃÖÀûÈ­"³ª ¸¶Âù°¡Áö¶ó°í ºñÆÇÇÒÁöµµ ¸ð¸¨´Ï´Ù. ¹Ì½Ã ÃÖÀûÈ­´Â ¶§·Î´Â È¿À²ÀûÀÎ µ¥ÀÌÅÍ ±¸Á¶¿Í ¾Ë°í¸®ÁòÀ» °³¹ßÇÏ´Â °ÍÀ» ´õ ¾î·Æ°Ô ¸¸µç´Ù´Â °ÍÀº »ç½ÇÀÔ´Ï´Ù. ÇÏÁö¸¸, ÇÚµå¼Â°ú °°Àº ÀÓº£µðµå ±â±â¿¡¼­´Â ¶§·Î´Â º°´Ù¸¥ ¼±ÅÃÁö°¡ ¾ø½À´Ï´Ù. ¿¹¸¦ µé¾î, ¿©·¯ºÐÀÌ µ¥½ºÅ©Å¾¿¡¼­ °³¹ßÇÒ ¶§ »ý°¢ÇÏ´Â VMÀÇ ¼º´É¿¡ ´ëÇÑ °¡Á¤À» ¾Èµå·ÎÀ̵忡µµ Àû¿ëÇÑ´Ù¸é, ¿©·¯ºÐÀº ½Ã½ºÅÛ ¸Þ¸ð¸®¸¦ ¼ÒÁøÇعö¸®´Â Äڵ带 ²Ï³ª ÀÛ¼ºÇØ ¹ö¸®°í ¸» °ÍÀÔ´Ï´Ù. ÀÌ°ÍÀº ¿©·¯ºÐÀÇ ¾ÖÇø®ÄÉÀ̼ÇÀÌ ¹Ù´ÚÀ» ±âµµ·Ï ÇÒ ¼ö ÀÖ½À´Ï´Ù — ½Ã½ºÅÛ¿¡¼­ µ¿ÀÛÇÏ´Â ´Ù¸¥ ÇÁ·Î±×·¥µé¿¡°Ô ¹«¾ùÀ» ÇÏ´ÂÁö ÁöÄѺ¸¼¼¿ä!



ÀÌ°ÍÀÌ ¹Ù·Î ÀÌ °¡À̵å¶óÀÎÀÌ Áß¿äÇÑ ÀÌÀ¯ÀÔ´Ï´Ù. ¾Èµå·ÎÀ̵åÀÇ ¼º°øÀº ¿©·¯ºÐÀÇ ¾ÖÇø®ÄÉÀ̼ÇÀÌ Á¦°øÇÏ´Â »ç¿ëÀÚ °æÇè(UX)¿¡ ´Þ·È°í, »ç¿ëÀÚ °æÇèÀ̶õ °ÍÀº ¿©·¯ºÐÀÇ Äڵ尡 ºü¸£°í ÆÈÆÈÇÏ°Ô ¹ÝÀÀÇÏ´ÂÁö, ¾Æ´Ï¸é ´À¸®°í ¹«°Å¿îÁö¿¡ ´Þ·È½À´Ï´Ù. ¸ðµç ¿ì¸®ÀÇ ¾ÖÇø®ÄÉÀ̼ǵéÀº °°Àº ÀåÄ¡¿¡¼­ µ¿ÀÛÇÒ °ÍÀ̱⠶§¹®¿¡, ¾î¶² Àǹ̷Î, ¿ì¸® ¸ðµÎ ÇÔ²² ÀÌ °ÍµéÀ» ÁöÅ°µµ·Ï ÃÖ¼±À» ´ÙÇØ¾ß ÇÕ´Ï´Ù. ÀÌ ¹®¼­¸¦ ¿îÀü¸éÇ㸦 µþ ¶§ ¹è¿ö¾ß¸¸ ÇÏ´Â µµ·Î±³Åë¹ýÀ̶ó°í »ý°¢Çϼ¼¿ä: ¸ðµç ÀÌ°¡ µû¸£¸é ¹®Á¦¾øÀÌ ¿øÈ°ÇÏ°ÚÁö¸¸, µû¸£Áö ¾Ê´Â´Ù¸é »ç°í°¡ ³¯ °Íó·³ ¸»ÀÔ´Ï´Ù.



ÀÚ¼¼ÇÑ ³»¿ëÀ» ´Ù·ç±â Àü¿¡, °£´ÜÇÑ ÁÖÀÇ»çÇ×ÀÔ´Ï´Ù: ¾Æ·¡ ¼³¸íµÈ ´ëºÎºÐÀÇ À̽´µéÀº VMÀÌ JIT ÄÄÆÄÀÏ·¯ÀÌµç ¾Æ´Ïµç È¿°úÀûÀÔ´Ï´Ù. °°Àº ±â´ÉÀ» ¼öÇàÇÏ´Â µÎ ¸Þ¼Òµå°¡ ÀÖ°í interpret ¹æ½Ä¿¡¼­ foo()ÀÇ ½ÇÇà¼Óµµ°¡ bar()º¸´Ù ºü¸£´Ù¸é, ÄÄÆÄÀÏ µÈ ¹öÀü¿¡¼­µµ ¾Æ¸¶ foo()°¡ bar()°ú ºñ½ÁÇϰųª ´õ ºü¸¥ ¼Óµµ¸¦ º¸¿©ÁÙ °ÍÀÔ´Ï´Ù. ÄÄÆÄÀÏ·¯°¡ ¿©·¯ºÐÀ» "±¸ÇØÁÙ"°ÍÀ̶ó´ø°¡ ÃæºÐÈ÷ ºü¸£°Ô ¸¸µé¾îÁÙ °ÍÀ̶ó°í ÀÇÁ¸ÇÏ´Â °Ç Çö¸íÇÏÁö ¸øÇÏ´Ù´Â °ÍÀÌÁÒ.




°´Ã¼ »ý¼ºÀ» ÇÇÇ϶ó

°´Ã¼ÀÇ »ý¼ºÀº °áÄÚ °øÂ¥°¡ ¾Æ´Õ´Ï´Ù. Àӽà °´Ã¼µéÀ» À§ÇØ ¾²·¹µå-´ç(per-thread) ÇÒ´ç Ç®À» »ç¿ëÇÏ´Â ¼¼´ëÇü(generational) GC´Â ´õ ³·Àº ºñ¿ëÀ¸·Î ÇÒ´ç ÇÒ ¼ö ÀÖÁö¸¸, ¸Þ¸ð¸®¸¦ ÇÒ´çÇÑ´Ù´Â °ÍÀº ¸Þ¸ð¸®¸¦ ÇÒ´çÇÏÁö ¾Ê´Â °Í º¸´Ù ¾ðÁ¦³ª ´õ ³ôÀº ºñ¿ëÀÌ µì´Ï´Ù.



¸¸¾à »ç¿ëÀÚ ÀÎÅÍÆäÀ̽º ·çÇÁ¿¡¼­ °´Ã¼¸¦ ÇÒ´çÇÑ´Ù¸é, ÁÖ±âÀûÀ¸·Î °¡ºñÁö Ä÷º¼ÇÀ» °­¿äÇÏ°Ô µÉ °ÍÀÌ°í »ç¿ëÀÚ °æÇè¿¡ À־ Á¶±×¸¶ÇÑ "µþ²ÚÁú(°ÅºÏÇÔ)"À» ¸¸µé°Ô µÉ °Ì´Ï´Ù.



±×·¯¹Ç·Î, ÇÊ¿ä·Î ÇÏÁö ¾Ê´Â °´Ã¼ »ý¼ºÀ» ÇÇÇØ¾ß ÇÕ´Ï´Ù. µµ¿òÀÌ µÉ ¸î °¡Áö ¿¹Á¦µéÀÌ ÀÖ½À´Ï´Ù.
•ÀÔ·Â µ¥ÀÌÅÍ ¼Â¿¡¼­ ¹®ÀÚ¿­À» ÃßÃâÇÒ ¶§, º¹»ç »ý¼ºµÈ °Í ´ë½Å ¿øº» µ¥ÀÌÅÍÀÇ ºÎºÐ¹®ÀÚ¿­À» ¹ÞÀ¸½Ê½Ã¿À. »õ·Î¿î String °´Ã¼°¡ ¸¸µé¾îÁ³´õ¶óµµ ¿øº» µ¥ÀÌÅÍÀÇ char[]À» °øÀ¯ÇÒ °ÍÀÔ´Ï´Ù.
•¹®ÀÚ¿­À» ¹ÝȯÇÏ´Â ¸Þ¼Òµå°¡ ÀÖ°í ±× °á°ú°¡ ¾ðÁ¦³ª StringBuffer¿¡ ´õÇØÁö°Ô µÇ´Â °æ¿ì¿¡ ÀÖ´Ù¸é, ªÀº ¼ö¸íÀÇ Àӽà °´Ã¼¸¦ »ý¼ºÇÏ´Â ´ë½Å Á÷Á¢ÀûÀ¸·Î ´õÇØÁö´Â ¹æ½ÄÀ¸·Î ½Äº°ÀÚ¿Í ±¸Çö¹æ½ÄÀ» ¹Ù²Ù¼¼¿ä.

Á» ´õ ±ÞÁøÀûÀÎ ¾ÆÀ̵ð¾î´Â ´ÙÂ÷¿ø ¹è¿­À» º´·ÄÀÇ ´ÜÀÏ ÀÏ Â÷¿ø ¹è¿­·Î À߶󳻴 °ÍÀÔ´Ï´Ù:
•int ¹è¿­Àº Integer ¹è¿­º¸´Ù ´õ ÁÁ½À´Ï´Ù¸¸, ÀÌ°ÍÀ¸·Î ¶ÇÇÑ intÇüÀÇ µÎ º´·Ä ¹è¿­ÀÌ (int,int) °´Ã¼ÀÇ ¹è¿­º¸´Ù ´õ ¸¹ÀÌ È¿°úÀûÀ̶ó´Â »ç½ÇÀ» Ãß·ÐÇÒ ¼ö ÀÖ½À´Ï´Ù.
•¸¸¾à (Foo,Bar) Æ©Ç÷ΠÀúÀåÇÏ´Â ÄÁÅ×À̳ʸ¦ ±¸ÇöÇÒ ÇÊ¿ä°¡ ÀÖ´Ù¸é, Á÷Á¢ ¸¸µç (Foo,Bar) °´Ã¼ÀÇ ´ÜÀÏ ¹è¿­º¸´Ù µÎ °³ÀÇ º´·Ä Foo[] ¿Í Bar[] ¹è¿­ÀÌ ÀϹÝÀûÀ¸·Î ´õ¿í ´õ ÁÁ´Ù´Â °ÍÀ» ±â¾ïÇϽʽÿÀ. (¹°·Ð, ´Ù¸¥ ÄÚµåµéÀÌ Á¢±ÙÇØ¾ß ÇÏ´Â API¸¦ ¼³°èÇÒ ¶§¿¡´Â ¿¹¿Ü°¡ ÀÖ½À´Ï´Ù; ÀÌ °æ¿ì ÀÛÀº ¼Óµµ Çâ»óÀ» ³ë¸®´Â °Í º¸´Ù ÁÁÀº API¼³°è°¡ Ç×»ó ÁÁ½À´Ï´Ù. ±×·¯³ª ¿©·¯ºÐÀÇ ³»ºÎ Äڵ带 ÀÛ¼ºÇÒ ¶§¿¡´Â °¡´ÉÇÑ ÇÑ È¿À²ÀûÀÎ Äڵ尡 µÇµµ·Ï ÇØ¾ß ÇÏ°Ú½À´Ï´Ù.)

ÀϹÝÀûÀ¸·Î, °¡´ÉÇÏ´Ù¸é ªÀº ¼ö¸íÀÇ Àӽà °´Ã¼ »ý¼ºÀ» ÇÇÇϽʽÿÀ. ´õ ÀûÀº °´Ã¼µéÀ» ¸¸µç´Ù´Â °ÍÀº »ç¿ëÀÚ °æÇè¿¡ Á÷Á¢ÀûÀÎ ¿µÇâÀ» ÁÖ´Â °¡ºñÁö Ä÷º¼Ç ÁÙ¿©ÁÜÀ» ¶æÇÕ´Ï´Ù.




³×ÀÌƼºê ¸Þ¼Òµå¸¦ »ç¿ëÇ϶ó

¹®ÀÚ¿­À» ó¸®ÇÒ ¶§, String.indexOf(), String.lastIndexOf() ¿Í ±× ¹ÛÀÇ Æ¯º°ÇÑ ¸Þ¼Òµå¸¦ »ç¿ëÇÏ´Â °ÍÀ» ÁÖÀúÇÏÁö ¸¶½Ê½Ã¿À. ÀÌ ¸Þ¼ÒµåµéÀº ´ëüÀûÀ¸·Î, ÀÚ¹Ù ·çÇÁ·Î µÈ °Í º¸´Ù ´ë·« 10-100¹è ºü¸¥ C/C++ ÄÚµå·Î ±¸ÇöÀÌ µÇ¾îÀÖ½À´Ï´Ù.



ÀÌ Á¶¾ðÀÇ ¹Ý´ëÀû Ãø¸éÀº ³×ÀÌƼºê ¸Þ¼Òµå¸¦ È£ÃâÇÏ´Â °ÍÀÌ interpret¹æ½ÄÀÇ ¸Þ¼Òµå È£Ã⺸´Ù ´õ ºñ¿ëÀÌ ³ô´Ù´Â °ÍÀÔ´Ï´Ù. ÇÇÇÒ ¼ö ÀÖ´Ù¸é, »ç¼ÒÇÑ °è»ê¿¡´Â ³×ÀÌƼºê ¸Þ¼Òµå¸¦ »ç¿ëÇÏÁö ¸¶½Ê½Ã¿À.




ÀÎÅÍÆäÀ̽ºº¸´Ù °¡»ó ¿¬°áÀ» ¼±È£Ç϶ó

¿©·¯ºÐÀÌ HashMap °´Ã¼¸¦ Çϳª °¡Áö°í ÀÖ´Ù°í ÇսôÙ. ¿©·¯ºÐÀº HashMapÀ̳ª Á¦³×¸¯ Map À¸·Î ¼±¾ðÀ» ÇÒ ¼ö ÀÖ½À´Ï´Ù.
Map myMap1 = new HashMap();
HashMap myMap2 = new HashMap();

¾î¶²°ÍÀÌ ´õ ÁÁÀº°¡¿ä?



ÀüÅëÀûÀÎ ÁöÇý¿¡¼­´Â MapÀ» »ç¿ëÇØ¾ß ÇÑ´Ù°í ÇÒ °ÍÀÔ´Ï´Ù. Map ÀÎÅÍÆäÀ̽º¸¦ ±¸ÇöÇÑ ¾î¶² °ÍÀ¸·Î¶óµµ ±¸Çöü¸¦ ¹Ù²Ü ¼ö Àֱ⠶§¹®ÀÔ´Ï´Ù. ÀüÅëÀûÀÎ ÁöÇý´Â ÀüÅëÀûÀÎ ÇÁ·Î±×·¡¹Ö¿¡´Â ¸Â½À´Ï´Ù¸¸, ÀÓº£µðµå ½Ã½ºÅÛ¿¡´Â ±×´ÙÁö ´ë´ÜÇÏÁö ¾Ê½À´Ï´Ù. ÀÎÅÍÆäÀ̽º ÂüÁ¶¸¦ ÅëÇØ È£ÃâÇÏ´Â °ÍÀº ¸íÈ®ÇÑ ÂüÁ¶¸¦ ÅëÇÑ °¡»ó ¸Þ¼Òµå È£Ã⺸´Ù 2¹è ´õ ¼Ò¿äµÉ ¼ö ÀÖ½À´Ï´Ù.



¿©·¯ºÐÀÌ ÇÏ´Â ÀÏ¿¡ ÀûÇÕÇÏ¿© HashMap»ç¿ëÀ» ¼±ÅÃÇß´Ù¸é MapÀ¸·Î È£ÃâÇÏ´Â °ÍÀº °ÅÀÇ °¡Ä¡°¡ ¾ø½À´Ï´Ù. Äڵ带 ¸®ÆÑÅ͸µ ÇØ ÁÖ´Â IDEÀÇ °¡´É¼ºÀ» °í·ÁÇØ º¸´õ¶óµµ, MapÀ¸·Î È£ÃâÇÏ´Â °ÍÀº Å« °¡Ä¡°¡ ¾ø½À´Ï´Ù. ¿©·¯ºÐÀÌ ÄÚµåÀÇ ¹æÇâÀ» È®½ÅÇÏÁö ¸øÇÑ´Ù Çصµ ¸»ÀÔ´Ï´Ù. (´Ù½Ã±Ý ÀÌÁö¸¸, °ø¿ë API´Â ¿¹¿ÜÀÔ´Ï´Ù: ÀÛÀº ¼º´É °í·Áº¸´Ù ÁÁÀº API°¡ ¾ðÁ¦³ª À¸¶äÀÔ´Ï´Ù.)




°¡»ó ¿¬°áº¸´Ù Á¤Àû ¿¬°áÀ» ¼±È£Ç϶ó

¸¸¾à °´Ã¼ÀÇ Çʵ忡 Á¢±ÙÇÒ ÇÊ¿ä°¡ ¾ø´Ù¸é, ¿©·¯ºÐÀÇ ¸Þ¼Òµå¸¦ Á¤Àû(static)À¸·Î ¸¸µå¼¼¿ä. °¡»ó ¸Þ¼Òµå Å×À̺íÀ» ÇÊ¿ä·Î ÇÏÁö ¾Ê±â ¶§¹®¿¡ ±×°Ô ´õ ºü¸£°Ô ºÒ·ÁÁý´Ï´Ù. ¶ÇÇÑ, ¸Þ¼Òµå ½Äº°ÀÚ¸¦ º¸°í ¸Þ¼Òµå È£ÃâÀÌ °´Ã¼ÀÇ »óŸ¦ ¹Ù²Ü ¼ö ¾ø´Ù°í ¸»ÇÒ ¼ö ÀÖÀ¸¹Ç·Î, ÁÁÀº °ü½ÀÀÌ µË´Ï´Ù.




³»ºÎ¿¡¼­ Getter/Setter »ç¿ëÀ» ÇÇÇ϶ó

C++¿Í °°Àº ³×ÀÌƼºê ¾ð¾î¿¡¼­ Çʵ忡 Á÷Á¢ÀûÀ¸·Î Á¢±ÙÇÏ´Â °Í (¿¹. i = mCount) º¸´Ù getter¸¦ »ç¿ëÇÏ´Â °Í (i = getCount())Àº ÀϹÝÀûÀÎ °ü½ÀÀÔ´Ï´Ù. ÀÌ ¹æ¹ýÀº C++¿¡¼­´Â ÈǸ¢ÇÑ ½À°üÀÔ´Ï´Ù. ¿Ö³ÄÇϸé Ç×»ó Á¢±ÙÀ» inlineÈ­ ÇÒ ¼ö ÀÖ´Â ÄÄÆÄÀÏ·¯¸¦ »ç¿ëÇÏ°í ÀÖ°í, Çʵ忡 Á¢±ÙÀ» Á¦ÇÑÇϰųª µð¹ö±× ÇØ¾ß ÇÑ´Ù¸é ¾ðÁ¦³ª Äڵ带 Ãß°¡ÇÒ ¼ö Àֱ⠶§¹®ÀÔ´Ï´Ù.



¾Èµå·ÎÀ̵忡¼­´Â ³ª»Û »ý°¢ÀÔ´Ï´Ù. °¡»ó ¸Þ¼Òµå È£ÃâÀº ÀνºÅϽº Çʵå ÂüÁ¶º¸´Ù ´õ ºñ¿ëÀÌ ³ô½À´Ï´Ù. ÀϹÝÀûÀÎ °´Ã¼ ÁöÇâ ÇÁ·Î±×·¡¹Ö °ü½À¿¡ µû¸£°Å³ª, °ø¿ë ÀÎÅÍÆäÀ̽º¿¡¼­ getter, setterÀ» °¡Áö´Â °ÍÀº ÀÌÄ¡¿¡ ¸Â½À´Ï´Ù. ±×·¯³ª Ŭ·¡½º ³»ºÎ¿¡¼­´Â ¾ðÁ¦³ª Á÷Á¢ÀûÀ¸·Î Çʵå Á¢±ÙÀ» ÇؾßÇÕ´Ï´Ù.




Çʵå ÂüÁ¶µéÀ» ij½ÃÇ϶ó

°´Ã¼ÀÇ Çʵ忡 Á¢±ÙÇÏ´Â °ÍÀº Áö¿ª º¯¼ö¿¡ Á¢±ÙÇÏ´Â °Í º¸´Ù ´õ ´À¸³´Ï´Ù. ÀÌ·¸°Ô ÀÛ¼ºÇÏ´Â °Í ´ë½Å:
for (int i = 0; i < this.mCount; i++)

      dumpItem(this.mItems[i]);

ÀÌ·¸°Ô ÇϽʽÿÀ:
  int count = this.mCount;

  Item[] items = this.mItems;

  for (int i = 0; i < count; i++)

      dumpItems(items[i]);



(¸â¹ö º¯¼ö¶ó´Â °ÍÀ» ¸íÈ®È÷ Çϱâ À§ÇØ ¸í½ÃÀûÀÎ "this"¸¦ »ç¿ëÇÏ°í ÀÖ½À´Ï´Ù.)



À¯»çÇÑ °¡À̵å¶óÀÎÀº, °áÄÚ "for"¹®ÀÇ µÎ ¹ø° Á¶°Ç¿¡¼­ ¸Þ¼Òµå¸¦ È£ÃâÇÏÁö ¸»¶ó´Â °ÍÀÔ´Ï´Ù. ¿¹¸¦ µé¾î, ´ÙÀ½ ÄÚµå´Â °£´ÜÇÏ°Ô int °ªÀ¸·Î ij½¬ ÇÒ ¼ö ÀÖ´Â °æ¿ìÀÓ¿¡µµ Å« ³¶ºñ°¡ µÇ´Â getCount()¸Þ¼Òµå¸¦ ¸Å¹ø ¹Ýº¹ ¸¶´Ù ½ÇÇàÇÏ°Ô µË´Ï´Ù:
for (int i = 0; i < this.getCount(); i++)
    dumpItems(this.getItem(i));

ÀνºÅϽº Çʵ带 Çѹø ÀÌ»ó Á¢±ÙÇØ¾ß ÇÑ´Ù¸é, Áö¿ª º¯¼ö¸¦ ¸¸µå´Â °Í ¶ÇÇÑ ÁÁÀº »ý°¢ÀÔ´Ï´Ù. ¿¹¸¦ µé¾î:
    protected void drawHorizontalScrollBar(Canvas canvas, int width, int height) {

        if (isHorizontalScrollBarEnabled()) {
            int size = mScrollBar.getSize(false);
            if (size <= 0) {
                size = mScrollBarSize;
            }

            mScrollBar.setBounds(0, height - size, width, height);
            mScrollBar.setParams(
                    computeHorizontalScrollRange(),
                    computeHorizontalScrollOffset(),
                    computeHorizontalScrollExtent(), false);
            mScrollBar.draw(canvas);

        }
    }

mScrollBar ¸â¹ö Çʵ忡 ³× °³ÀÇ ºÐ¸®µÈ ÂüÁ¶°¡ ÀÖ½À´Ï´Ù. Áö¿ª ½ºÅà º¯¼ö·Î mScrollBar¸¦ ij½Ì ÇÔÀ¸·Î½á, ³× °³ÀÇ ¸â¹ö Çʵå ÂüÁ¶°¡ ´õ¿í È¿À²ÀûÀÎ ³× °³ÀÇ ½ºÅà º¯¼ö ÂüÁ¶·Î ¹Ù²î¾ú½À´Ï´Ù.

µ¡ºÙ¿© ¸»ÇÏÀÚ¸é, ¸Þ¼Òµå ÀÎÀÚµéÀº Áö¿ª º¯¼ö¿Í °°Àº ¼º´É Ư¼ºÀ» °¡Áý´Ï´Ù.




»ó¼ö¸¦ Final·Î ¼±¾ðÇ϶ó

Ŭ·¡½ºÀÇ »ó´Ü¿¡ ÀÖ´Â ´ÙÀ½ ¼±¾ðÀ» °í·ÁÇØ º¾½Ã´Ù:
static int intVal = 42;
static String strVal = "Hello, world!";

ÄÄÆÄÀÏ·¯´Â Ŭ·¡½º°¡ óÀ½ »ç¿ëµÉ ¶§ ½ÇÇàÇÏ°Ô µÇ´Â <clinit>¶ó ºÒ¸®´Â 'Ŭ·¡½º ÃʱâÈ­ ¸Þ¼Òµå'¸¦ »ý¼ºÇÕ´Ï´Ù. ÀÌ ¸Þ¼Òµå°¡ intVal¿¡ 42 °ªÀ» ÀúÀåÇÏ°í, strVal¿¡´Â Ŭ·¡½ºÆÄÀÏ ¹®ÀÚ »ó¼ö Å×À̺í·ÎºÎÅÍ ÂüÁ¶¸¦ ÃßÃâÇÏ¿© ÀúÀåÇÕ´Ï´Ù. ³ªÁß¿¡ ÂüÁ¶µÉ ¶§ ÀÌ °ªµéÀº Çʵå ÂüÁ¶·Î Á¢±ÙµË´Ï´Ù.

À̸¦ "final" Å°¿öµå·Î Çâ»ó½Ãų ¼ö ÀÖ½À´Ï´Ù:
static final int intVal = 42;
static final String strVal = "Hello, world!";

Ŭ·¡½º´Â ´õÀÌ»ó <clinit> ¸Þ¼Òµå¸¦ ÇÊ¿ä·Î ÇÏÁö ¾Ê½À´Ï´Ù. ¿Ö³ÄÇÏ¸é »ó¼öµéÀº VM¿¡ ÀÇÇØ Á÷Á¢ÀûÀ¸·Î ´Ù·ç¾î Áö´Â 'Ŭ·¡½ºÆÄÀÏ Á¤Àû Çʵå ÃʱâÀÚ'¿¡ µé¾î°¡±â ¶§¹®ÀÔ´Ï´Ù. intValÀÇ ÄÚµå Á¢±ÙÀº Á÷Á¢ÀûÀ¸·Î Á¤¼ö °ª 42¸¦ »ç¿ëÇÒ °ÍÀÌ°í, strVal·ÎÀÇ Á¢±ÙÀº Çʵå ÂüÁ¶º¸´Ù »ó´ëÀûÀ¸·Î Àú·ÅÇÑ "¹®ÀÚ¿­ »ó¼ö" ¸í·ÉÀ» »ç¿ëÇÏ°Ô µÉ °ÍÀÔ´Ï´Ù.



"final"À¸·Î ¸Þ¼Òµå³ª Ŭ·¡½ºÀÇ ¼±¾ðÀ» ÇÏ´Â °ÍÀº Áï°¢ÀûÀÎ ¼º´É À̵æÀ» ÁÖÁö´Â ¸øÇÏÁö¸¸, ƯÁ¤ÇÑ ÃÖÀûÈ­¸¦ °¡´ÉÇÏ°Ô ÇÕ´Ï´Ù. ¿¹¸¦ µé¾î, ÄÄÆÄÀÏ·¯°¡ ¼­ºêŬ·¡½º¿¡ ÀÇÇØ ¿À¹ö¶óÀ̵åµÉ ¼ö ¾ø´Â "getter"¸Þ¼Òµå¸¦ ¾Ë°í ÀÖ´Ù¸é, ¸Þ¼Òµå È£ÃâÀ» inlineÈ­ ÇÒ ¼ö ÀÖ½À´Ï´Ù.



¿©·¯ºÐÀº ¶ÇÇÑ Áö¿ª º¯¼ö¸¦ final·Î ¼±¾ðÇÒ ¼ö ÀÖ½À´Ï´Ù. ÇÏÁö¸¸ ÀÌ°ÍÀº °áÁ¤ÀûÀÎ ¼º´É À̵æÀº ¾ø½À´Ï´Ù. Áö¿ª º¯¼ö¿¡´Â ¿ÀÁ÷ Äڵ带 ¸íÈ®È÷ Çϱâ À§Çؼ­ "final"À» »ç¿ëÇÕ´Ï´Ù (¶Ç´Â ¿¹¸¦ µé¾î ÀÍ¸í ³»ºÎ Ŭ·¡½º¸¦ »ç¿ëÇØ¾ß ÇÑ´Ù¸é °¡´É).




ÁÖÀÇ ±í°Ô Çâ»óµÈ ¹Ýº¹¹®(Enhanced For Loop)À» »ç¿ëÇ϶ó

Çâ»óµÈ ¹Ýº¹¹®(¶§·Î "for-each"·Î ¾Ë·ÁÁø ¹Ýº¹¹®)Àº Iterable ÀÎÅÍÆäÀ̽º¸¦ ±¸ÇöÇÑ Ä÷º¼ÇµéÀ» À§ÇØ »ç¿ëµÉ ¼ö ÀÖ½À´Ï´Ù. ÀÌ·¯ÇÑ °´Ã¼µé·Î, ¹Ýº¹ÀÚ´Â hasNext() ¿Í next()À» È£ÃâÇÏ´Â ÀÎÅÍÆäÀ̽º¸¦ ¸¸µé±â À§ÇØ ÇÒ´çµË´Ï´Ù. ArrayListÀÇ °æ¿ì ¿©·¯ºÐÀÌ Á÷Á¢ Ž»öÇÏ´Â °ÍÀÌ ÁÁÀ» ¼ö ÀÖ½À´Ï´Ù¸¸, ´Ù¸¥ Ä÷º¼Çµé¿¡¼­´Â Çâ»óµÈ ¹Ýº¹¹® ±¸¹®ÀÌ ¸í½ÃÀûÀÎ ¹Ýº¹ÀÚÀÇ »ç¿ë°ú µ¿µîÇÑ ¼º´ÉÀ» º¸¿©ÁÝ´Ï´Ù.



±×·³¿¡µµ, ´ÙÀ½ ÄÚµå·Î Çâ»óµÈ ¹Ýº¹¹®ÀÇ ¸¸Á·½º·¯¿î »ç¿ë¹ýÀ» º¼ ¼ö ÀÖ½À´Ï´Ù:
public class Foo {

    int mSplat;
    static Foo mArray[] = new Foo[27];
    public static void zero() {
        int sum = 0;
        for (int i = 0; i < mArray.length; i++) {
            sum += mArray[i].mSplat;
        }
    }

    public static void one() {
        int sum = 0;
        Foo[] localArray = mArray;
        int len = localArray.length;

        for (int i = 0; i < len; i++) {
            sum += localArray[i].mSplat;
        }
    }

    public static void two() {
        int sum = 0;
        for (Foo a: mArray) {
            sum += a.mSplat;
        }
    }
}

zero() ´Â ¹Ýº¹µÇ´Â ¸Å Áֱ⸶´Ù Á¤Àû Çʵ带 µÎ ¹ø ºÎ¸£°í ¹è¿­ÀÇ ±æÀ̸¦ Çѹø ¾ò½À´Ï´Ù.



one() Àº ÂüÁ¶¸¦ ÇÇÇϱâ À§ÇØ Áö¿ª º¯¼ö·Î ¸ðµç °ÍÀ» ²ø¾î³Â½À´Ï´Ù.



two() ´Â ÀÚ¹Ù ¾ð¾îÀÇ 1.5¹öÀü¿¡¼­ ¼Ò°³µÈ Çâ»óµÈ ¹Ýº¹¹® ±¸¹®À» »ç¿ëÇÕ´Ï´Ù. ÄÄÆÄÀÏ·¯¿¡ ÀÇÇØ »ý¼ºµÈ ÄÚµå´Â ¹è¿­ ÂüÁ¶¿Í ¹è¿­ÀÇ ±æÀ̸¦ Áö¿ª º¯¼ö·Î º¹»çÇØÁÖ¾î, ¹è¿­ÀÇ ¸ðµç ¿ø¼Ò¸¦ Ž»öÇϴµ¥ ÁÁÀº ¼±ÅÃÀÌ µÉ ¼ö ÀÖ½À´Ï´Ù. ÁÖ ·çÇÁ ³»¿¡ Ãß°¡ÀûÀÎ Áö¿ª Àбâ/ÀúÀåÀÌ ¸¸µé¾îÁö°í(¸í¹éÇÏ°Ô "a"¿¡ ÀúÀå), one()º¸´Ù ÂÉ±Ý ´À¸®°í 4 ¹ÙÀÌÆ® ±æ¾îÁö°Ô Çϱä ÇÕ´Ï´Ù.



Á» ´õ ¸íÈ®ÇÏ°Ô ¸ðµç °ÍÀ» Á¾ÇÕÇÏÀÚ¸é: Çâ»óµÈ ¹Ýº¹¹® ±¸¹®Àº ¹è¿­°ú Àß µ¿ÀÛÇÏÁö¸¸, Ãß°¡ÀûÀÎ °´Ã¼ »ý¼ºÀÌ ÀÖ°Ô µÇ´Â Iterable °´Ã¼¿Í ÇÔ²² »ç¿ëÇÒ ¶§¿£ Á¶½ÉÇØ¾ß ÇÕ´Ï´Ù.




¿­°ÅÇü(Enum)À» ÇÇÇ϶ó

¿­°ÅÇüÀº ¸Å¿ì Æí¸®ÇÕ´Ï´Ù, ±×·¯³ª ºÒ¿îÇÏ°Ôµµ Å©±â¿Í ¼Óµµ Ãø¸é¿¡¼­ °íÅ뽺·¯¿ï ¼ö ÀÖ½À´Ï´Ù. ¿¹¸¦µé¾î, ´ÙÀ½ÀÇ ÄÚµå´Â:
public class Foo {
   public enum Shrubbery { GROUND, CRAWLING, HANGING }
}

900 ¹ÙÀÌÆ®ÀÇ Å¬·¡½º ÆÄÀÏ (Foo$Shrubbery.class) ·Î º¯È¯µË´Ï´Ù. óÀ½ »ç¿ëÇÒ ¶§, Ŭ·¡½º ÃʱâÀÚ´Â °¢°¢ÀÇ ¿­°ÅÈ­µÈ °ªµéÀ» Ç¥±âÈ­ ÇÏ´Â °´Ã¼»óÀÇ <init>¸Þ¼Òµå¸¦ È£ÃâÇÕ´Ï´Ù. °¢ °´Ã¼´Â Á¤Àû Çʵ带 °¡Áö°Ô µÇ°í ÃÑ ¼ÂÀº ¹è¿­("$VALUES"¶ó ºÒ¸®´Â Á¤Àû Çʵå)¿¡ ÀúÀåµË´Ï´Ù. ´ÜÁö ¼¼ °³ÀÇ Á¤¼ö¸¦ À§ÇØ ¸¹Àº ÄÚµå¿Í µ¥ÀÌÅ͸¦ ÇÊ¿ä·Î ÇÏ°Ô µË´Ï´Ù.



´ÙÀ½ ÄÚµå:
Shrubbery shrub = Shrubbery.GROUND;

´Â Á¤Àû Çʵå ÂüÁ¶¸¦ ¾ß±âÇÕ´Ï´Ù. "GROUND"°¡ Á¤Àû final int ¿´´õ¶ó¸é, ÄÄÆÄÀÏ·¯´Â ¾Ë·ÁÁø »ó¼ö·Î¼­ ´Ù·ç°í, inlineÈ­ ÇßÀ» ¼öµµ ÀÖ½À´Ï´Ù.



¹°·Ð, ¹Ý´ëÀû Ãø¸é¿¡¼­ ¿­°ÅÇüÀ¸·Î ´õ ÁÁÀº API¸¦ ¸¸µé ¼ö ÀÖ°í ¾î¶² °æ¿ì¿£ ÄÄÆÄÀÏ-ŸÀÓ °ª °Ë»ç¸¦ ÇÒ ¼ö ÀÖ½À´Ï´Ù. ±×·¡¼­ Åë»óÀÇ ±³È¯Á¶°Ç(trade-off)ÀÌ Àû¿ëµË´Ï´Ù: ¹Ýµå½Ã °ø¿ë API¿¡¸¸ ¿­°ÅÇüÀ» »ç¿ëÇÏ°í, ¼º´É¹®Á¦°¡ Áß¿äÇÒ ¶§¿¡´Â »ç¿ëÀ» ÇÇÇϽʽÿÀ.



¾î¶² ȯ°æ¿¡¼­´Â ordinal() ¸Þ¼Òµå¸¦ ÅëÇØ Á¤¼ö °ª ¿­°Å¸¦ °®´Â °ÍÀÌ µµ¿òÀÌ µÉ ¼ö ÀÖ½À´Ï´Ù. ¿¹¸¦ µé¾î, ´ÙÀ½ Äڵ带:
for (int n = 0; n < list.size(); n++) {
    if (list.items[n].e == MyEnum.VAL_X)
       // do stuff 1
    else if (list.items[n].e == MyEnum.VAL_Y)
       // do stuff 2
}

´ÙÀ½ ÄÚµå·Î ´ë½ÅÇÕ´Ï´Ù:
   int valX = MyEnum.VAL_X.ordinal();
   int valY = MyEnum.VAL_Y.ordinal();
   int count = list.size();

   MyItem items = list.items();

   for (int  n = 0; n < count; n++)
   {
        int  valItem = items[n].e.ordinal();
        if (valItem == valX)
          // do stuff 1
        else if (valItem == valY)
          // do stuff 2
   }

¶§·Î´Â, º¸ÀåÇÒ ¼ö ¾ø½À´Ï´Ù¸¸, ÀÌ°ÍÀÌ ´õ ºü¸¦ ¼ö ÀÖ½À´Ï´Ù.




³»ºÎ Ŭ·¡½º¿Í ÇÔ²² ÆÐÅ°Áö ¹üÀ§¸¦ »ç¿ëÇ϶ó

´ÙÀ½ Ŭ·¡½º Á¤ÀǸ¦ °í·ÁÇØ º¾½Ã´Ù:
public class Foo {
    private int mValue;

    public void run() {
        Inner in = new Inner();
        mValue = 27;
        in.stuff();
    }

    private void doStuff(int value) {
        System.out.println("Value is " + value);
    }
    private class Inner {
        void stuff() {
            Foo.this.doStuff(Foo.this.mValue);
        }
    }
}

¿©±â¼­ ÁÖ¸ñÇØ¾ß ÇÒ Áß¿äÇÑ °ÍÀº, ¿ÜºÎ Ŭ·¡½ºÀÇ private ¸Þ¼Òµå¿Í private ÀνºÅϽº Çʵ忡 Á÷Á¢ Á¢±ÙÇÏ°í ÀÖ´Â ³»ºÎ Ŭ·¡½º(Foo$Inner)¸¦ Á¤ÀÇÇß´Ù´Â °ÍÀÔ´Ï´Ù. ÀÌ°ÍÀº Àû¹ýÇÏ°í, ÄÚµå´Â ±â´ëÇß´ø ´ë·Î "Value is 27"À» Ãâ·ÂÇÕ´Ï´Ù.



¹®Á¦´Â Foo$Inner´Â ±â¼úÀûÀ¸·Î´Â (ºñ¹Ð·Î½á) ¿ÏÀüÈ÷ ºÐ¸®µÈ, FooÀÇ private ¸â¹ö·Î Á÷Á¢ÀûÀÎ Á¢±ÙÀ» ÇÏ´Â °ÍÀº Àû¹ýÇÏÁö ¸øÇÑ Å¬·¡½º¶ó´Â °Í ÀÔ´Ï´Ù. ÀÌ Â÷À̸¦ ¿¬°áÁþ±â À§ÇØ, ÄÄÆÄÀÏ·¯´Â µÎ °³ÀÇ ÇÕ¼º ¸Þ¼Òµå¸¦ ¸¸µì´Ï´Ù:
/*package*/ static int Foo.access$100(Foo foo) {
    return foo.mValue;
}

/*package*/ static void Foo.access$200(Foo foo, int value) {
    foo.doStuff(value);
}

³»ºÎ Ŭ·¡½º ÄÚµå´Â ¿ÜºÎ Ŭ·¡½º¿¡ ÀÖ´Â "mValue" Çʵ忡 Á¢±ÙÇϰųª "doStuff" ¸Þ¼Òµå¸¦ ºÎ¸£±â À§ÇØ ÀÌ Á¤Àû ¸Þ¼Òµå¸¦ ºÎ¸¨´Ï´Ù. ÀÌ°ÍÀº ÀÌ Äڵ尡 °á±¹Àº Á÷Á¢ÀûÀÎ ¹æ¹ý ´ë½Å Á¢±ÙÀÚ ¸Þ¼Òµå¸¦ ÅëÇØ ¸â¹ö Çʵ忡 Á¢±ÙÇÏ°í ÀÖ´Ù´Â °ÍÀ» ¶æÇÕ´Ï´Ù. ÀÌÀü¿¡ ¿ì¸®´Â ¾î°¼­ Á¢±ÙÀÚ°¡ Á÷Á¢ÀûÀÎ Çʵå Á¢±Ùº¸´Ù ´À¸°Áö¿¡ ´ëÇØ À̾߱â Çß¾ú´Âµ¥, ÀÌ ¹®Á¦·Î¼­ "º¸ÀÌÁö ¾Ê´Â" ¼º´É Ÿ°Ý Ãø¸é¿¡¼­ ƯÁ¤ ¾ð¾îÀÇ ¾î¹ýÀÌ ¾ß±âÇÏ°Ô µÇ´Â ¹®Á¦¿¡ ´ëÇÑ ¿¹Á¦°¡ µÉ ¼ö ÀÖ°Ú½À´Ï´Ù.



ÀÌ ¹®Á¦´Â ³»ºÎ Ŭ·¡½º°¡ Á¢±ÙÇÏ´Â Çʵå¿Í ¸Þ¼Òµå ¼±¾ð¿¡ private ¹üÀ§°¡ ¾Æ´Ñ package ¹üÀ§¸¦ °¡Áöµµ·Ï ÇÔÀ¸·Î½á ÇÇÇÒ ¼ö ÀÖ½À´Ï´Ù. ÀÌ·Î½á ´õ¿í ºü¸£°Ô µ¿ÀÛÇÏ°Ô µÇ°í ÀÚµ¿ »ý¼ºµÇ´Â ¸Þ¼Òµå¿¡ ÀÇÇÑ ¿À¹öÇìµå¸¦ Á¦°ÅÇÒ ¼ö ÀÖ½À´Ï´Ù. (ºÒ¿îÇÏ°Ôµµ ÀÌ ¶ÇÇÑ Á÷Á¢ÀûÀ¸·Î °°Àº ÆÐÅ°Áö ³»ÀÇ ´Ù¸¥ Ŭ·¡½ºµéÀÌ Çʵåµé¿¡ Á¢±ÙÇÒ ¼ö ÀÖ´Ù´Â °ÍÀ» ¶æÇÏ°Ô µÇ¸ç, ¸ðµç ÇʵåµéÀº private·Î ÇØ¾ß ÇѴٴ ǥÁØÀûÀÎ OO °ü½À¿¡ °Å½º¸£°Ô µË´Ï´Ù. ´Ù½Ã Çѹø ´õ ¸»ÇÏÀÚ¸é, °ø¿ë API¸¦ ¼³°èÇÏ°Ô µÈ´Ù¸é ÀÌ ÃÖÀûÈ­¸¦ »ç¿ëÇÏ´Â °ÍÀ» Á¶½É½º·´°Ô °í¹ÎÇؾ߸¸ ÇÒ °ÍÀÔ´Ï´Ù.)




Float¸¦ ÇÇÇ϶ó

ÆæƼ¾ö CPU°¡ Ãâ½ÃµÇ±â Àü, °ÔÀÓ Á¦ÀÛÀڵ鿡°Õ Á¤¼ö °è»ê¿¡ ÃÖ¼±À» ´ÙÇÏ´Â °ÍÀÌ ÀϹÝÀûÀ̾ú½À´Ï´Ù. ÆæƼ¾ö°ú ÇÔ²² ºÎµ¿¼Ò¼öÁ¡ °è»ê º¸Á¶ ÇÁ·Î¼¼¼­´Â ÀÏüÇüÀÌ µÇ¾ú°í, Á¤¼ö¿Í ºÎµ¿¼Ò¼öÁ¡ ¿¬»êÀ» ³ÖÀ½¿¡ µû¶ó ¼ø¼öÇÏ°Ô Á¤¼ö °è»ê¸¸À» »ç¿ëÇÏ´Â °Í º¸´Ù °ÔÀÓÀº ´õ ºü¸£°Ô µÇ¾ú½À´Ï´Ù. ÀÚÀ¯·Ó°Ô ºÎµ¿¼Ò¼öÁ¡À» »ç¿ëÇÏ´Â °ÍÀº µ¥½ºÅ©Å¾ ½Ã½ºÅÛ¿¡¼­´Â ÀϹÝÀûÀÔ´Ï´Ù.



ºÒ¿îÇÏ°Ôµµ, ÀÓº£µðµå ÇÁ·Î¼¼¼­¿¡°Ô´Â ºó¹øÇÏ°Ô Çϵå¿þ¾îÀûÀ¸·Î ºÎµ¿¼Ò¼öÁ¡ °è»êÀÌ Á¦°øµÇÁö ¾Ê°í ÀÖ¾î, "float" ¿Í "double"ÀÇ ¸ðµç °è»êÀÌ ¼ÒÇÁÆ®¿þ¾îÀûÀ¸·Î 󸮵˴ϴÙ. ¾î¶² ±âÃÊÀûÀÎ ºÎµ¿¼Ò¼öÁ¡ °è»êÀº ¿Ï·á±îÁö ´ë·« ÀÏ ¹Ð¸® ÃÊ Á¤µµ °É¸± ¼ö ÀÖ½À´Ï´Ù.



¶ÇÇÑ, Á¤¼ö¿¡¼­µµ ¾î¶² ĨµéÀº Çϵå¿þ¾î °ö¼ÀÀ» °¡Áö°í ÀÖÁö¸¸ Çϵå¿þ¾î ³ª´°¼ÀÀÌ ¾ø±âµµ ÇÕ´Ï´Ù. ÀÌ·¯ÇÑ °æ¿ì, Á¤¼ö ³ª´°¼À°ú ³ª¸ÓÁö ¿¬»êÀº ¼ÒÇÁÆ®¿þ¾îÀûÀ¸·Î 󸮵˴ϴ٠— ¸¸¾à Çؽà Å×À̺íÀ» ¼³°èÇϰųª ¸¹Àº °è»êÀÌ ÇÊ¿äÇÏ´Ù¸é »ý°¢ÇØ º¸¾Æ¾ß ÇÒ °ÍÀÔ´Ï´Ù.




¼º´É ¿¹½Ã ¼ýÀÚ ¸î °³

¿ì¸®ÀÇ ¸î °¡Áö ¾ÆÀ̵ð¾î¸¦ ¼³¸íÇϱâ À§ÇØ, ¾à°£ÀÇ ±âÃÊÀûÀÎ Çൿµé¿¡ ´ëÇØ ´ë·«ÀûÀÎ ½ÇÇà½Ã°£À» ³ª¿­ÇÑ Å×À̺íÀ» ¸¸µé¾ú½À´Ï´Ù. ÀÌ °ªµéÀº Àý´ëÀûÀÎ ¼ýÀÚ°¡ ¾Æ´Ï¶ó´Â °ÍÀ» ÁÖ¸ñÇØ ÁֽʽÿÀ: CPU½Ã°£°ú ½ÇÁ¦ ±¸µ¿ ½Ã°£ÀÇ Á¶ÇÕÀÌ°í, ½Ã½ºÅÛÀÇ ¼º´É Çâ»ó¿¡ µû¶ó º¯È­ÇÒ ¼ö ÀÖ½À´Ï´Ù. ±×·¯³ª ÀÌ °ªµé »çÀÌ¿¡ °ü°è¸¦ Àû¿ëÇØ º¸´Â °ÍÀº ÁÖ¸ñÇÒ ¸¸ÇÑ °¡Ä¡°¡ ÀÖ½À´Ï´Ù — ¿¹¸¦ µé¾î, ¸â¹ö º¯¼ö¸¦ ´õÇÏ´Â °ÍÀº Áö¿ª º¯¼ö¸¦ ´õÇÏ´Â °Íº¸´Ù ´ë·« ³× ¹è°¡ °É¸³´Ï´Ù.




Çൿ ½Ã°£

Áö¿ª º¯¼ö ´õÇϱâ 1
¸â¹ö º¯¼ö ´õÇϱâ 4
String.length() È£Ãâ 5
ºó Á¤Àû ³×ÀÌƼºê ¸Þ¼Òµå È£Ãâ 5
ºó Á¤Àû ¸Þ¼Òµå È£Ãâ 12
ºó °¡»ó ¸Þ¼Òµå È£Ãâ 12.5
ºó ÀÎÅÍÆäÀ̽º ¸Þ¼Òµå È£Ãâ 15
HashMapÀÇ Iterator:next() È£Ãâ 165
HashMapÀÇ put() È£Ãâ 600
XML·ÎºÎÅÍ 1 View °´Ã¼È­(Inflate) 22,000
1 TextView¸¦ ´ãÀº 1 LinearLayout °´Ã¼È­(Inflate) 25,000
6°³ÀÇ View °´Ã¼¸¦ ´ãÀº 1 LinearLayout °´Ã¼È­(Inflate) 100,000
6°³ÀÇ TextView °´Ã¼¸¦ ´ãÀº 1 LinearLayout °´Ã¼È­(Inflate) 135,000
ºó activity ½ÃÀÛ 3,000,000




¸ÎÀ½ ¸»

ÀÓº£µðµå ½Ã½ºÅÛÀ» À§ÇØ ÁÁ°í È¿À²ÀûÀÎ Äڵ带 ÀÛ¼ºÇÏ´Â ÃÖ¼±ÀÇ ¹æ¹ýÀº ¿©·¯ºÐÀÌ ÀÛ¼ºÇÏ´Â Äڵ尡 ½ÇÁ¦·Î ¹«¾ùÀ» ÇÏ´ÂÁö ÀÌÇØÇÏ´Â °Í ÀÔ´Ï´Ù. ¿©·¯ºÐÀÌ Á¤¸»·Î ¹Ýº¹ÀÚ¸¦ ÇÒ´çÇϱ⸦ ¿øÇÑ´Ù¸é, List¿¡ Çâ»óµÈ ¹Ýº¹¹®À» ¹Ýµå½Ã »ç¿ëÇϽʽÿÀ; ºÎÁÖÀÇÇÑ ºÎÀÛ¿ëÀÌ ¾Æ´Ñ ½ÅÁßÇÑ ¼±ÅÃÀ» ÅëÇؼ­ ¸»ÀÔ´Ï´Ù.



À¯ºñ¹«È¯ÀÔ´Ï´Ù! ¹«¾ùÀ» ÇÏ´ÂÁö ¾Ë°í Çϼ¼¿ä! ÁÁ¾ÆÇÏ´Â Á¿ì¸íÀ» ¿©±â¿¡ ³ÖÀ¸¼¼¿ä, ±×·¯³ª ¾ðÁ¦³ª ¿©·¯ºÐÀÇ Äڵ尡 ¹«¾ùÀ» ÇÏ´ÂÁö ÁÖÀÇ ±í°Ô »ý°¢ÇÏ°í, ¼Óµµ¸¦ ³ôÀÌ´Â ¹æ¹ýÀ» ãµµ·Ï °æ°èÇϽʽÿÀ.
ÃßõÃßõ : 233 Ãßõ ¸ñ·Ï
¹øÈ£ Á¦¸ñ
1,346
À©µµ¿ì ¼­¹ö 2019 Ãë¾àÁ¡ Á¡°Ë º¸¾È
1,345
À©µµ¿ì ¼­¹ö 2019 Ãë¾àÁ¡ Á¡°Ë º¸¾È (windows server 2019)
1,344
Windows Ãë¾àÁ¡Áø´Ü º¸¾È°¡À̵å¶óÀÎ
1,343
Windows Admin Center¸¦ ÅëÇÑ ¼­¹ö °ü¸®
1,342
À©µµ¿ì ¼­¹ö¿¡¼­ ½ÇÇàµÇ´Â ¼­ºñ½º È®ÀÎ
1,341
Chrome NET::ERR CERT REVOKED ÇØ°á¹æ¹ý
1,340
cmd ¸í·É¾î (¸í·É ÇÁ·ÒÇÁÆ® ¸í·É¾î) ¸ðÀ½
1,339
Windows10 ƯÁ¤ ÇÁ·Î±×·¥(OCS 2007 R2)¿¡¼­ ÷ºÎÆÄÀÏ µå·¡±×¾Øµå·ÓÀÌ ¾È µÇ´Â Çö»ó
1,338
À©µµ¿ì ·Î±×, °ü¸® À̺¥Æ® »èÁ¦
1,337
Ŭ¸° ºÎÆÃ
1,336
Windows ±¸¼º ¿ä¼Ò ÀúÀå¼Ò¿¡¼­ ÆÄÀÏ ¼Õ»ó °Ë»ç
1,335
Windows Defender °Ë»ç ±â·Ï »èÁ¦Çϱâ
1,334
°£´ÜÇÑ À©µµ¿ì 10 Á¤Ç° ÀÎÁõ (Å©·¢ÇÁ·Î±×·¥ ÇÊ¿ä¾øÀ½)
1,333
¿À·ù³­ Æú´õ °­Á¦»èÁ¦ ¹æ¹ý
1,332
Å©·Ò¿¡¼­ Ç÷¡½Ã Ç×»ó Çã¿ëÇϵµ·Ï ¼³Á¤Çϱâ (·¹Áö½ºÆ®¸®) reg ÆÄÀÏ ¸¸µé±â
1,331
GPT µð½ºÅ©¸¦ MBR µð½ºÅ©·Î º¯È¯
1,330
MBR µð½ºÅ©¸¦ GPT µð½ºÅ©·Î º¯È¯
1,329
±¸±Û °Ë»öÀ» 200% È°¿ëÇÏ°Ô ÇØÁÖ´Â °Ë»ö ¸í·É¾î ÃÑÁ¤¸®
1,328
[Jquery] jQuery·Î ¿ìŬ¸¯ ¹æÁö, µå·¡±× ¹æÁö, ¼±Åà ¹æÁö (IE10, ÆÄÀ̾îÆø½º, Å©·Ò È®ÀÎ)
1,327
php »ç¿ëÀÚ Á¢¼ÓIP, ºê¶ó¿ìÀúÁ¤º¸, osÁ¤º¸, http, https Á¢¼ÓÇÁ·ÎÅäÄÝ ¾Ë¾Æ¿À±â
1,326
[PHP] IE ºê¶ó¿ìÀú Á¢¼Ó °ËÃâÇϱâ
1,325
À©µµ¿ì10 ½Ã½ºÅÛ ¿¹¾à ÆÄƼ¼Ç È®ÀÎ ¹× »èÁ¦
1,324
À©µµ¿ì10 º¹±¸ ÆÄƼ¼Ç »èÁ¦ ¹æ¹ý
1,323
À©µµ¿ì10 ºÎÆÃÁö¿¬ °ËÀºÈ­¸é¿¡¼­ ¸îºÐ°£ ¸Ó¹«´Â Çö»ó ÇØ°á¹æ¹ý
1,322
»ï¼º³ëÆ®ºÏ ¹ÙÀÌ¿À½º ÁøÀÔÀÌ ºÒ°¡´ÉÇÑ °æ¿ì ¹ÙÀÌ¿À½º À缳ġ¿Í NVRAM ÃʱâÈ­
1,321
ÀͽºÇ÷η¯(IE)ÀÇ ±¸±Û °Ë»ö°ø±ÞÀÚ Çѱ۷Πº¯°æ ¹æ¹ý
1,320
À©µµ¿ì 10 ±âº» ¾Û »èÁ¦ ¹× º¹±¸
1,319
meta ÅÂ±× http-equiv ¼³Á¤¹æ¹ý°ú Â÷ÀÌÁ¡
1,318
±¸±Û(Google)°Ë»ö¿¡¼­ °í±Þ¿¬»êÀÚ¸¦ ÀÌ¿ëÇÏ¿© ¸¹Àº Á¤º¸¸¦ ¾ò´Â ¹æ¹ý
1,317
ÇÁ·Î±×·¥ ¾øÀÌ Çϵåµð½ºÅ© º¹»ç ¹× ¹é¾÷Çϱâ
¸ñ·Ï
¹ÂÁ÷Æ®·ÎÆ® ºÎ»ê±¤¿ª½Ã ºÎ»êÁø±¸ °¡¾ßµ¿ ¤Ó °³ÀÎÁ¤º¸Ãë±Þ¹æħ
Copyright ¨Ï musictrot All rights reserved.