¼Ò¼³°°ÀºÀÚ¹Ù2ºÎ  Á¦6Àå ¹è¿­ Ä÷º¼Ç ¿­°ÅÀÚ  6.2.3 ¹è¿­ÀÇ º¹»ç  

 

6.2.3 ¹è¿­ÀÇ º¹»ç

ÀϹÝÀûÀÎ °´Ã¼Ã³·³ ¹è¿­ ¶ÇÇÑ º¹»ç°¡ µÇÁö ¾Ê½À´Ï´Ù. ±×·¡¼­ ÀÚ¹Ù¿¡¼­ ¹è¿­À» º¹»çÇϱâ À§ÇÑ ¹æ¹ýÀ» ¸î °¡Áö Á¦½ÃÇϰí ÀÖ½À´Ï´Ù. ¹°·Ð, ¿ì¸®´Â ¾ÆÁ÷ °´Ã¼ º¹»ç¶ó´Â °ÍÀ» ¹è¿ìÁö ¾Ê¾Ò½À´Ï´Ù. °´Ã¼ º¹»ç´Â 10ÀåÀÇ ObjectÀÇ clone¸Þ¼­µå¿¡¼­ ¹è¿ì°Ô µÉ °ÍÀÔ´Ï´Ù. ¿ì¼±ÀûÀ¸·Î ¿©±â¼­´Â ¹è¿­ÀÇ º¹»ç¶ó´Â °ÍÀ» ¹è¿ö º¸µµ·Ï ÇϰڽÀ´Ï´Ù.

 

¹è¿­º¹»ç´Â System.arraycopy¸¦ ÀÌ¿ëÇÏ´Â ¹æ¹ý°ú ¹è¿­ ÀÚüÀÇ clone¸Þ¼­µå¸¦ ÀÌ¿ëÇÏ´Â ¹æ¹ýÀ¸·Î ³ª´­ ¼ö ÀÖ½À´Ï´Ù. ÀÌ µÎ ¹æ¹ý¿¡ ´ëÇÑ ¿¹¸¦ »ìÆì º¸µµ·Ï ÇϰڽÀ´Ï´Ù.

 

¹è¿­À» º¹»çÇÏ´Â ¹æ¹ý

n         System.arraycopy¸¦ ÀÌ¿ëÇÏ´Â ¹æ¹ý

n         ¹è¿­ ÀÚüÀÇ clone¸Þ¼­µå¸¦ ÀÌ¿ëÇÏ´Â ¹æ¹ý

 

ÀÏ´Ü System.arraycopy¸Þ¼­µåºÎÅÍ »ìÆì º¸µµ·Ï ÇÏÁÒ.

 

System.arraycopy¸Þ¼­µå ¼¼ºÎ»çÇ×

public static void arraycopy(Object src,         /*¿øº»¹è¿­.*/

                             int src_position,   /*¿øº»¹è¿­ÀÇ ½ÃÀÛÀ§Ä¡*/

                             Object dst,        /*º¹»çÇÒ ¹è¿­*/

                             int dst_position,   /* º¹»çÇÒ ¹è¿­ÀÇ ½ÃÀÛÀ§Ä¡ */

                               int length)        /*º¹»çÇÒ °³¼ö.*/

 

Ưº°ÇÑ °ÍÀº ¾ø½À´Ï´Ù. src´Â ¿øº» ¹è¿­À̰í src_positionÀº ¿øº»ÀÇ ¾îµð¼­ºÎÅÍ º¹»ç¸¦ ½ÃÀÛÇÒ °ÍÀÎÁö¸¦ °áÁ¤ÇØ ÁÝ´Ï´Ù. ±×¸®°í dst´Â º¹»çÇÏ·Á°í ÇÏ´Â ¹è¿­À̸ç dst_positionÀº º¹»çÇÒ ¹è¿­ÀÇ Ã¹ À§Ä¡¸¦ ¸»ÇÕ´Ï´Ù. ¸¶Áö¸·À¸·Î length´Â º¹»çÇÏ·Á°í ÇÏ´Â ¹è¿­ÀÇ °³¼ö¸¦ Á¤ÇØÁÖ¸é ½ÃÀÛÀ§Ä¡ºÎÅÍ º¹»çÇÒ °³¼ö¸¸Å­ ¹è¿­À» º¹»çÇÏ°Ô µË´Ï´Ù. À§ÀÇ ¸Þ¼­µå¸¦ ÀÌ¿ëÇÑ ¿¹¸¦ ¸¸µé¾î º¸µµ·Ï ÇϰڽÀ´Ï´Ù.

 

ArrayTest.java (System.arraycopy¸Þ¼­µå¸¦ Å×½ºÆ®Çϱâ À§ÇÑ ¿¹Á¦)

public class ArrayTest{

             public static void main(String[] args){

                           int[] mydream  = new int[]{5, 4, 6, 9, 7, 9};

                           int[] mytarget = {100, 200, 300, 400, 500, 600,700};

                           System.arraycopy(mydream, 2, mytarget, 3, 4);

                           for(int i=0; i<mytarget.length; i++){

                                        System.out.println("mytarget["+i+"]:" + mytarget[i]);

                           }

             }

}

C:\examples\6. Array>javac ArrayTest.java

C:\examples\6. Array>java ArrayTest

mytarget[0]:100

mytarget[1]:200

mytarget[2]:300

mytarget[3]:6

mytarget[4]:9

mytarget[5]:7

mytarget[6]:9

 

À§ÀÇ ¿¹¿¡¼­ ¹è¿­ÀÇ º¹»ç¶ó´Â Ãø¸é¿¡¼­, arraycopy¸Þ¼­µåÀÇ »ç¿ë¹æ¹ýÀ» Á¤È®ÇÏ°Ô º¼ ¼ö ÀÖ½À´Ï´Ù. ±×¸®°í ¹è¿­ÀÇ ¼±¾ð°ú ÃʱâÈ­¸¦ µ¿½Ã¿¡ ÇÏ´Â 2°¡Áö ¹æ¹ýÀûÀÎ Ãø¸é¿¡¼­µµ ÀÌ ¿¹Á¦¸¦ °üÂûÇØ º¸½Ã±â ¹Ù¶ø´Ï´Ù.

 

¹è¿­ ¼±¾ð°ú ÃʱâÈ­¸¦ µ¿½Ã¿¡ ÇÏ´Â ¹æ¹ý

n        int[] mydream  = new int[]{5, 4, 6, 9, 7, 9};

n        int[] mytarget = {100, 200, 300, 400, 500, 600,700};

 

ÀÌ ¿¹Á¦¿¡¼­ Çϳª ´õ ¿©·¯ºÐ¿¡°Ô °­Á¶ÇÏ°í ½ÍÀº °ÍÀÌ ÀÖ´Ù¸é ¹è¿­ÀÇ Àüü °³¼ö¸¦ ¾Ë°íÀÚÇÒ ¶§ ¹è¿­ÀÇ length¸â¹öÇʵ带 ÀÌ¿ëÇÏ¸é µÈ´Ù´Â °ÍÀÔ´Ï´Ù.

 

  ¹è¿­ÀÇ °³¼ö¸¦ ¾Ë°íÀÚ ÇÒ ¶§

n         mydream.length

n         mytarget.length

 

¹è¿­¿¡ lengthÇʵå´Â ¹è¿­ÀÇ Àüü °³¼ö¸¦ ´ã°í ÀÖ½À´Ï´Ù. ±×¸®°í ¹è¿­¿¡ Á¡(.)Âï°í »ç¿ëÇÒ ¼ö ÀÖ´Â °ÍÀº ¹è¿­ÀÌ °´Ã¼¶ó´Â °ÍÀ» ¸»ÇØ ÁÖ´Â ºÎºÐÀÔ´Ï´Ù.

 

ÃÖÁ¾ÀûÀ¸·Î mydreamÀÇ 2¹øÂ°(0,1,2¹øÂ°)ºÎÅÍ 4°³¸¦ º¹»çÇϴµ¥ mytargetÀÇ 3¹ø?(0,1,2,3¹øÂ°)ºÎÅÍ 4°³¸¦ º¹»çÇ϶ó´Â ¸í·ÉÀ» ¼öÇàÇÏ°Ô µË´Ï´Ù. ÀÌ ¸í·ÉÀº ´ÙÀ½°ú °°½À´Ï´Ù.

 

n         System.arraycopy(mydream, 2, mytarget, 3, 4);

 

°á°ú¸¦ Àß »ìÆì º¸½Ã±â ¹Ù¶ø´Ï´Ù. mydreamÀÇ 2¹øÂ°(0,1,2) ¿ä¼ÒºÎÅÍ 4°³°¡ º¹»ç µÇ¾úÀ» °ÍÀÔ´Ï´Ù. ±×¸®°í mytarget¿¡¼­´Â 3¹øÂ°(0,1,2,3)ºÎÅÍ º¹»ç°¡ ÀÌ·ç¾îÁö°í ÀÖÀ» °ÍÀÔ´Ï´Ù.

 

 

´ÙÀ½À¸·Î cloneÀ» ÀÌ¿ëÇÑ ¹è¿­ º¹»ç¹æ¹ýÀ» ¾Ë¾Æ º¸µµ·Ï ÇϰڽÀ´Ï´Ù.

 

ArrayCloneTest.java

public class ArrayCloneTest{

             public static void main(String[] args){

                           int[] mydream  = new int[]{5, 4, 6, 9, 7, 9};

                           int[] mytarget = (int[])mydream.clone();

                          

                           for(int i=0; i<mytarget.length; i++){

                                        System.out.println("mytarget["+i+"]:" + mytarget[i]);

                           }

             }

}

C:\examples\6. Array>javac ArrayCloneTest.java

C:\examples\6. Array>java ArrayCloneTest

mytarget[0]:5

mytarget[1]:4

mytarget[2]:6

mytarget[3]:9

mytarget[4]:7

mytarget[5]:9

 

¹è¿­ °´Ã¼¿¡¼­ clone() ¸Þ¼­µå¸¦ ÀÌ¿ëÇÏ¿© °´Ã¼¸¦ º¹»çÇÒ ¼ö ÀÖ½À´Ï´Ù. clone¸Þ¼­µå´Â ¸Þ¸ð¸®¸¦ º¹»çÇÏ¿© ObjectÇüÀÇ °´Ã¼¸¦ ¸®ÅÏÇϰí ÀÖ½À´Ï´Ù. ¿ÜºÎ¿¡¼­´Â º¯¼ö¸¦ ¼±¾ðÇÏ¿© ¹Þ±â¸¸ÇÏ¸é µÇ´Â °ÍÀÌÁö¿ä. ÇÏÁö¸¸ clone¸Þ¼­µå°¡ ObjectÇüÀ» ¸®ÅÏÇϰí Àֱ⠶§¹®¿¡ int[]ÇüÀÇ µ¥ÀÌÅÍ Å¸ÀÔÀ¸·Î ´Ù¿îij½ºÆÃÀ» ÇØ¼­ ¹è¿­ÀÇ ÇüÅ·Π¸¸µé¾î ÁÖ¾î¾ß ÇÕ´Ï´Ù.

 

n         int[] mytarget = (int[])mydream.clone();

 

ÀÌ ÇÑÁÙÀÌ clone¸Þ¼­µå¸¦ »ç¿ëÇÏ´Â ÀüºÎÀÔ´Ï´Ù. mydreamÀ» º¹»çÇÏ¸é ´ç¿¬È÷ int[]ÀÌ µÇÁö¸¸ cloneÀÚü°¡ ObjectÇüÀ» ¸®ÅÏÇϱ⠶§¹®¿¡ ¿©·¯ºÐÀÌ Á÷Á¢ °­Á¦ÀûÀ¸·Î ´Ù¿îij½ºÆÃÀ» ÇØÁÖ¾î¾ß ÇÕ´Ï´Ù. ±×¸®°í, ¸¸¾à À߸øµÈ ´Ù¿îij½ºÆÃÀ» ÇÑ´Ù¸é ½ÇÇà½Ã¿¡ ¸ÚÁø ¿¡·¯¸¦ ¸¸³ª°Ô µÉ °ÍÀÔ´Ï´Ù. ¹Ýµå½Ã ´Ù¿îij½ºÆÃÇÒ ¶§¿¡´Â ¿ø·¡ÀÇ ÇüÀ¸·Î ´Ù¿îij½ºÆÃÇØÁÖ¾î¾ß ÇÕ´Ï´Ù. ÀÚ¹ÙÀÇ Ã¶Ä¢°ú °°ÁÒ. ¹°·Ð ´Ù¸¥ ¾ð¾î¿¡¼­µµ ¸¶Âù°¡ÁöÀÔ´Ï´Ù.



jabookÀúÀÚ¸íÇÔ
Á¦¸ñ:¼Ò¼³°°ÀºÀÚ¹Ù2ºÎ
ÀúÀÚ:ÃÖ¿µ°ü