ÀϹÝÀûÀÎ °´Ã¼Ã³·³ ¹è¿ ¶ÇÇÑ º¹»ç°¡ µÇÁö ¾Ê½À´Ï´Ù. ±×·¡¼ ÀÚ¹Ù¿¡¼ ¹è¿À» º¹»çÇϱâ À§ÇÑ ¹æ¹ýÀ» ¸î °¡Áö Á¦½ÃÇϰí ÀÖ½À´Ï´Ù. ¹°·Ð, ¿ì¸®´Â ¾ÆÁ÷ °´Ã¼ º¹»ç¶ó´Â °ÍÀ» ¹è¿ìÁö ¾Ê¾Ò½À´Ï´Ù. °´Ã¼ º¹»ç´Â 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); 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{ 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ºÎ ÀúÀÚ:ÃÖ¿µ°ü |