CORE
HOME > JAVA > J2SE > CORE
2020.10.03 / 18:12

java - ¿ëµµ - char[]°¡ Stringº¸´Ù String¿¡ ºñÇØ ¼±È£µÇ´Â ÀÌÀ¯´Â ¹«¾ùÀԴϱî?

Ãß¼®µ¹ÀÌ
Ãßõ ¼ö 223

stringbuilder string format (12)

Swing¿¡¼­ ¾ÏÈ£ Çʵå´Â ÀϹÝÀûÀΠgetText() ( String ¹ÝȯÇÕ´Ï´Ù) ¸Þ¼­µå ´ë½Å getPassword() ( char[] ) ¸Þ¼­µå¸¦ ¹ÝȯÇÕ´Ï´Ù. ¸¶Âù°¡Áö·Î String À» »ç¿ëÇÏ¿© ¾ÏÈ£¸¦ ó¸®ÇÏÁö ¾Êµµ·Ï Á¦¾ÈÇß½À´Ï´Ù.

String Àº ¾ÏÈ£¿Í °ü·ÃÇÏ¿© º¸¾È¿¡ À§ÇùÀ̵Ǵ ÀÌÀ¯´Â ¹«¾ùÀԴϱî? char[] ¸¦ »ç¿ëÇÏ´Â °ÍÀÌ ºÒÆíÇÕ´Ï´Ù.


  1. ¹®ÀÚ¿­Àº ¾ÏÈ£¸¦ ÀÏ¹Ý ÅؽºÆ®·Î ÀúÀåÇÏ¸é °¡ºñÁö Ä÷ºÅÍ°¡À̸¦ Áö¿ï ¶§±îÁö Java¿¡¼­ º¯°æ µÇÁö ¾ÊÀ¸¸ç StringÀÌ Àç»ç¿ëÀ» À§ÇØ String Ç®¿¡¼­ »ç¿ëµÇ±â ¶§¹®¿¡ ¿À·¡ µ¿¾È ¸Þ¸ð¸®¿¡ ³²¾ÆÀÖÀ» °¡´É¼ºÀÌ »ó´çÈ÷ ³ô½À´Ï´Ù ±â°£Àº º¸¾È À§ÇùÀ̵˴ϴÙ. ¸Þ¸ð¸® ´ýÇÁ¿¡ ¾×¼¼½º ±ÇÇÑÀÌÀÖ´Â »ç¿ëÀÚ´Â ¾ÏÈ£¸¦ ÀÏ¹Ý ÅؽºÆ®·Î ãÀ» ¼ö Àֱ⠶§¹®¿¡
  2. char []¸¦ ¹ÝȯÇÏ´Â JPasswordFieldÀÇ getPassword() ¸Þ¼Òµå¿Í º¸¾È»óÀÇ ÀÌÀ¯·Î ÀÏ¹Ý ÅؽºÆ®·Î ¾ÏÈ£¸¦ ¹ÝȯÇϴ getText() ¸Þ¼Òµå¸¦ »ç¿ëÇϴ Java ±ÇÀå »çÇ× .
  3. toString () Ç×»ó ·Î±× ÆÄÀÏÀ̳ª Äֿܼ¡ ÀÏ¹Ý ÅؽºÆ®¸¦ Àμâ ÇÒ À§ÇèÀÌ ÀÖÁö¸¸ Array¸¦ »ç¿ëÇÏ¸é ¸Þ¸ð¸® À§Ä¡°¡ ÀμâµÇ´Â ´ë½Å ¹è¿­ ³»¿ëÀ» ÀμâÇÏÁö ¾Ê½À´Ï´Ù.

    String strPwd = "passwd";
    char[] charPwd = new char[]{'p','a','s','s','w','d'};
    System.out.println("String password: " + strPwd );
    System.out.println("Character password: " + charPwd );
    

    ¹®ÀÚ¿­ ¾ÏÈ£ : passwd

    ¹®ÀÚ ¾ÏÈ£ : [C @ 110b2345

ÃÖÁ¾ »ý°¢ : char []¸¦ »ç¿ëÇÏ´Â °Í¸¸À¸·Î´Â ÃæºÐÇÏÁö ¾ÊÁö¸¸ ´õ ¾ÈÀüÇÏ°ÔÇϱâ À§ÇØ ³»¿ëÀ» Áö¿ï ÇÊ¿ä°¡ ÀÖ½À´Ï´Ù. ¶ÇÇÑ ÀÏ¹Ý ÅؽºÆ® ´ë½Å Çؽ¬ µÈ ¶Ç´Â ¾Ïȣȭ µÈ ¾ÏÈ£·Î ÀÛ¾÷ÇÏ°í ÀÎÁõÀÌ ¿Ï·áµÇ¸é ¹Ù·Î ¸Þ¸ð¸®¿¡¼­ Áö¿ì´Â °ÍÀÌ ÁÁ½À´Ï´Ù.


Jon SkeetÀÌ ¸»ÇßµíÀÌ, ¸®Ç÷º¼ÇÀ» »ç¿ëÇÏ´Â °Í ¿Ü¿¡´Â ´Ù¸¥ ¹æ¹ýÀº ¾ø½À´Ï´Ù.

±×·¯³ª ¹Ý»ç°¡ ´ç½ÅÀ»À§ÇÑ ¿É¼ÇÀ̶ó¸é, ´ç½ÅÀº ÀÌ°ÍÀ» ÇÒ ¼ö ÀÖ½À´Ï´Ù.

public static void main(String[] args) {
    System.out.println("please enter a password");
    // don't actually do this, this is an example only.
    Scanner in = new Scanner(System.in);
    String password = in.nextLine();
    usePassword(password);

    clearString(password);

    System.out.println("password: '" + password + "'");
}

private static void usePassword(String password) {

}

private static void clearString(String password) {
    try {
        Field value = String.class.getDeclaredField("value");
        value.setAccessible(true);
        char[] chars = (char[]) value.get(password);
        Arrays.fill(chars, '*');
    } catch (Exception e) {
        throw new AssertionError(e);
    }
}

´Þ¸± ¶§

please enter a password
hello world
password: '***********'

Âü°í : StringÀÇ char []°¡ GCÁÖ±âÀÇ ÀϺηΠº¹»ç µÈ °æ¿ì ÀÌÀü »çº»ÀÌ ¸Þ¸ð¸®ÀÇ ¾îµò°¡¿¡ÀÖÀ» °¡´É¼ºÀÌ ÀÖ½À´Ï´Ù.

ÀÌ ¿À·¡µÈ º¹»çº»Àº Èü ´ýÇÁ¿¡ Ç¥½ÃµÇÁö ¾ÊÁö¸¸ ÇÁ·Î¼¼½ºÀÇ ¿ø½Ã ¸Þ¸ð¸®¿¡ Á÷Á¢ ¾×¼¼½º ÇÒ ¼ö ÀÖÀ¸¸é º¼ ¼ö ÀÖ½À´Ï´Ù. ÀϹÝÀûÀ¸·Î ±×·¯ÇÑ ¾×¼¼½º ±ÇÇÑÀ» °¡Áø »ç¶÷Àº ÇÇÇؾßÇÕ´Ï´Ù.


°ø½Ä ¹®¼­¸¦ ÀοëÇÏÀÚ¸é ÀÚ¹Ù ¾Ïȣȭ ¾ÆÅ°ÅØÃÄ °¡À̵場 char[] ´ë String Æнº¿öµå (Æнº¿öµå ±â¹Ý ¾Ïȣȭ¿¡ ´ëÇؼ­ ¸»ÇÏ°í ÀÖÁö¸¸ ÀÌ°ÍÀº ÀϹÝÀûÀ¸·Î Æнº¿öµå¿¡ °üÇÑ °ÍÀÌ´Ù)

java.lang.String À¯ÇüÀÇ ¿ÀºêÁ§Æ®¿¡ ¾ÏÈ£¸¦ ¼öÁýÇÏ¿© ÀúÀåÇÏ´Â °ÍÀº ³í¸®Àû ÀÎ °Íó·³ º¸ÀÔ´Ï´Ù. ±×·¯³ª ¿©±â¿¡ÁÖÀÇÇØ¾ß ÇÒ »çÇ×ÀÌ ÀÖ½À´Ï´Ù. String À¯ÇüÀÇ Object ´Â º¯°æ ºÒ°¡´ÉÇÕ´Ï´Ù. Áï, »ç¿ë ÈÄ String ³»¿ëÀ» º¯°æ (µ¤¾î ¾²±â)Çϰųª 0À¸·Î ¼³Á¤ÇÒ ¼öÀÖ´Â ¸Þ¼­µå°¡ Á¤ÀǵǾî ÀÖÁö ¾Ê½À´Ï´Ù. ÀÌ ±â´ÉÀº String °´Ã¼°¡ »ç¿ëÀÚ ºñ¹Ð¹øÈ£¿Í °°Àº º¸¾È¿¡ ¹Î°¨ÇÑ Á¤º¸¸¦ ÀúÀåÇÏ´Â µ¥ ÀûÇÕÇÏÁö ¾Ê°ÔÇÕ´Ï´Ù. Ç×»ó º¸¾È¿¡ ¹Î°¨ÇÑ Á¤º¸¸¦ char ¹è¿­·Î ÀúÀåÇÏ°í ÀúÀåÇؾßÇÕ´Ï´Ù.

Java ÇÁ·Î±×·¡¹Ö ¾ð¾î, ¹öÀü 4.0¿¡ ´ëÇÑ º¸¾È ÄÚµù ÁöħÀÇ °¡ÀÌµå ¶óÀÎ 2-2 µµ ºñ½ÁÇÑ ³»¿ëÀ» ¸»ÇÕ´Ï´Ù (¿ø·¡´Â ·Î±ëÀÇ ¸Æ¶ôÀÔ´Ï´Ù).

Áöħ 2-2 : ¸Å¿ì ¹Î°¨ÇÑ Á¤º¸¸¦ ±â·ÏÇÏÁö ¸¶½Ê½Ã¿À.

»çȸ º¸Àå ¹øÈ£ (SSN) ¹× ¾ÏÈ£¿Í °°Àº ÀϺΠÁ¤º¸´Â ¸Å¿ì ¹Î°¨ÇÕ´Ï´Ù. ÀÌ Á¤º¸´Â ÇÊ¿ä ÀÌ»óÀ¸·Î ¿À·¡ º¸°üÇϰųª °ü¸®ÀÚ°¡ º¼ ¼öÀÖ´Â À§Ä¡¿¡ º¸°üÇؼ­´Â ¾ÈµË´Ï´Ù. ¿¹¸¦ µé¾î, ·Î±× ÆÄÀÏ·Î Àü¼ÛÇؼ­´Â ¾ÈµÇ¸ç °Ë»öÀ» ÅëÇØ ±× Á¸À縦 ŽÁö ÇÒ ¼ö ¾ø½À´Ï´Ù. ÀϺΠÀӽà µ¥ÀÌÅÍ´Â ¹®ÀÚ ¹è¿­°ú °°Àº º¯°æ °¡´ÉÇÑ µ¥ÀÌÅÍ ±¸Á¶¿¡ º¸°ü µÉ ¼ö ÀÖÀ¸¸ç »ç¿ë Á÷ÈÄ¿¡ Áö¿öÁý´Ï´Ù. °´Ã¼°¡ ¸Þ¸ð¸®¿¡¼­ ÇÁ·Î±×·¡¸Ó¿¡°Ô Åõ¸íÇÏ°Ô À̵¿µÇ¹Ç·Î µ¥ÀÌÅÍ ±¸Á¶¸¦ Áö¿ì¸é ÀÏ¹Ý Java ·±Å¸ÀÓ ½Ã½ºÅÛÀÇ È¿À²¼ºÀÌ °¨¼ÒÇÕ´Ï´Ù.

ÀÌ °¡ÀÌµå ¶óÀÎÀº ¶ÇÇÑ ´Ù·ç°íÀÖ´Â µ¥ÀÌÅÍÀÇ ÀÇ¹Ì ·ÐÀû Áö½ÄÀ» °¡Áö°í ÀÖÁö ¾ÊÀº ÇÏÀ§ ·¹º§ ¶óÀ̺귯¸®ÀÇ ±¸Çö ¹× »ç¿ë¿¡ ¿µÇâÀ» ¹ÌĨ´Ï´Ù. ¿¹¸¦ µé¾î, Àú¼öÁØÀÇ ½ºÆ®¸µ ÆÄ½Ì ¶óÀ̺귯¸®´Â ±×°ÍÀÌ ÀÛµ¿ÇÏ´Â ÅؽºÆ®¸¦ ·Î±× ÇÒ ¼öÀÖ´Ù. ÀÀ¿ë ÇÁ·Î±×·¥Àº SSNÀ» ¶óÀ̺귯¸®¿Í ±¸¹® ºÐ¼® ÇÒ ¼ö ÀÖ½À´Ï´Ù. ÀÌ·¸°ÔÇÏ¸é °ü¸®ÀÚ°¡ SSNÀ» ·Î±× ÆÄÀÏ¿¡ ¾×¼¼½º ÇÒ ¼öÀÖ´Â »óȲÀÌ ¸¸µé¾îÁý´Ï´Ù.


³ª´Â ÀÌ°ÍÀÌ À¯È¿ÇÑ Á¦¾ÈÀ̶ó°í »ý°¢ÇÏÁö ¾ÊÁö¸¸, Àû¾îµµ ³ª´Â ÀÌÀ¯¿¡¼­ ÃßÃø ÇÒ ¼öÀÖ´Ù.

³ª´Â µ¿±â ºÎ¿©°¡ »ç¿ë µÈ ÈÄ Áï½Ã ºñ¹Ð ¹øÈ£ÀÇ ¸ðµç ÈçÀûÀ» È®½ÇÇÏ°í È®½ÇÇÏ°Ô Áö¿ï ¼ö Àֱ⸦ ¹Ù¶ø´Ï´Ù. char[] ¸¦ »ç¿ëÇÏ¸é ¹è¿­ÀÇ °¢ ¿ä¼Ò¸¦ °ø¹éÀ¸·Î µ¤¾î ¾µ ¼ö ÀÖ½À´Ï´Ù. ±×·± ½ÄÀ¸·Î String ÀÇ ³»ºÎ °ªÀ» ÆíÁý ÇÒ ¼ö ¾ø½À´Ï´Ù.

±×·¯³ª ±×°ÍÀº Ȧ·Î ÁÁÀº ´ë´äÀº ¾Æ´Õ´Ï´Ù. char[] ¶Ç´Â String ´ëÇÑ ÂüÁ¶°¡ À̽ºÄÉÀÌÇÁµÇÁö ¾Ê¾Ò´ÂÁö È®ÀÎÇϽʽÿÀ. ±×·¯¸é º¸¾È ¹®Á¦´Â ¾ø½À´Ï´Ù. ±×·¯³ª ±× ¹®Á¦´Â String °´Ã¼°¡ ÀÌ·ÐÀûÀ¸·Î intern() µÉ ¼ö ÀÖ°í »ó¼ö Ç® ³»ºÎ¿¡¼­ »ì¾Æ³²À» ¼ö ÀÖ´Ù´Â °ÍÀÔ´Ï´Ù. ³ª´Â char[] »ç¿ëÇÏ´Â °ÍÀÌ ÀÌ·¯ÇÑ °¡´É¼ºÀ» ±ÝÁöÇÑ´Ù°í »ý°¢ÇÑ´Ù.


´ë´äÀº ÀÌ¹Ì ÁÖ¾îÁ³Áö¸¸ ÃÖ±Ù¿¡ Àڹ٠ǥÁØ ¶óÀ̺귯¸®¿¡¼­ ¹ß°ß ÇÑ ¹®Á¦¸¦ ¾Ë·Á µå¸®°íÀÚÇÕ´Ï´Ù. ¾ÏÈ£ ¹®ÀÚ¿­À» ¾îµð¿¡¼­³ª char[] ·Î ´ëüÇÏ´Â °ÍÀº ¸Å¿ì Áß¿äÇÏÁö¸¸ ´Ù¸¥ Áß¿äÇÑ º¸¾È µ¥ÀÌÅÍ´Â ¸Þ¸ð¸®¿¡¼­ Áö¿ì´Â µ¥ °£°úµÇ´Â °Íó·³ º¸ÀÔ´Ï´Ù.

³ª´Â PrivateKey Å¬·¡½º¸¦ »ý°¢ÇÏ°íÀÖ´Ù. PKCS # 12 ÆÄÀÏ¿¡¼­ °³ÀÎ RSA Å°¸¦·ÎµåÇÏ¿© ÀϺΠÀÛ¾÷À» ¼öÇàÇÏ´Â ½Ã³ª¸®¿À¸¦ »ý°¢Çغ¸½Ê½Ã¿À. ÀÌÁ¦ÀÌ °æ¿ì ºñ¹Ð¹øÈ£ ¸¸ ½º´ÏÇÎÇϸé Å° ÆÄÀÏ¿¡ ´ëÇÑ ¹°¸®Àû ¾×¼¼½º°¡ ÀûÀýÇÏ°Ô Á¦ÇѵǴ ÇÑ ¸¹Àº µµ¿òÀ̵ÇÁö ¾Ê½À´Ï´Ù. °ø°ÝÀÚ¶ó¸é ¾ÏÈ£ ´ë½Å Á÷Á¢ Å°¸¦ ¾ò´Â °ÍÀÌ ÈξÀ ³ªÀ» °ÍÀÔ´Ï´Ù. ¿øÇÏ´Â Á¤º¸°¡ ¸Å´Ï Æúµå, ÄÚ¾î ´ýÇÁ, µð¹ö°Å ¼¼¼Ç ¶Ç´Â ½º¿Ò ÆÄÀÏ·Î À¯Ãâ µÉ ¼ö ÀÖ½À´Ï´Ù.

±×¸®°í ±×°ÍÀÌ ³ª¿À¸é, ÇØ´ç Á¤º¸¸¦ ±¸¼ºÇÏ´Â ¹ÙÀÌÆ®¸¦ Áö¿ï ¼öÀÖ´Â API°¡ ¾øÀ¸¹Ç·Î ¸Þ¸ð¸®¿¡¼­ PrivateKey ÀÇ °³ÀÎ Á¤º¸¸¦ Áö¿ï ¼öÀÖ´Â ¹æ¹ýÀº ¾ø½À´Ï´Ù.

ÀÌ paper ´ÂÀÌ »óȲÀÌ ¾î¶»°Ô ÀáÀçÀûÀ¸·Î ¾Ç¿ë µÉ ¼ö ÀÖ´ÂÁö¸¦ ¼³¸íÇϱ⠶§¹®¿¡ ³ª»Û »óȲÀÔ´Ï´Ù.

¿¹¸¦ µé¾î OpenSSL ¶óÀ̺귯¸®´Â °³ÀÎ Å°°¡ ÇØÁ¦µÇ±â Àü¿¡ Áß¿äÇÑ ¸Þ¸ð¸® ¼½¼ÇÀ» µ¤¾î ¾¹´Ï´Ù. Java´Â °¡ºñÁö ÄÝ·º¼ÇÀ̹ǷÎ, Å°¸¦ »ç¿ëÇÑ Á÷ÈÄ¿¡ Àû¿ëµÉ Java Å°ÀÇ °³ÀÎ Á¤º¸¸¦ Áö¿ì°í ¹«È¿È­ÇÏ´Â ¸í½ÃÀûÀÎ ¸Þ¼Òµå°¡ ÇÊ¿äÇÕ´Ï´Ù.


¹®ÀÚ ¹è¿­ ( char[] )Àº »ç¿ë ÈÄ °¢ ¹®ÀÚ¸¦ 0À¸·Î ¼³Á¤ÇÏ°í ¹®ÀÚ¿­À» Áö¿ìÁö ¾Ê°í Áö¿ï ¼ö ÀÖ½À´Ï´Ù. ´©±º°¡°¡ ¾î¶»°Ô µç ¸Þ¸ð¸® À̹ÌÁö¸¦ º¼ ¼ö ÀÖ´Ù¸é ¹®ÀÚ¿­À» »ç¿ëÇϸé ÀÏ¹Ý ÅؽºÆ®·Î ¾ÏÈ£¸¦ º¼ ¼ö ÀÖÁö¸¸ char[] ¸¦ »ç¿ëÇϸé 0À¸·Î µ¥ÀÌÅ͸¦ Á¦°ÅÇÑ ÈÄ ¾ÏÈ£°¡ ¾ÈÀüÇÕ´Ï´Ù.


À̰͵éÀº ¸ðµÎ ÀÌÀ¯ÀÔ´Ï´Ù. Æнº¿öµå¿¡´Â String ´ë½Å¿¡ char [] ¹è¿­À» ¼±ÅÃÇؾßÇÕ´Ï´Ù.

1. Æнº¿öµå¸¦ ÀÏ¹Ý ÅؽºÆ®·Î ÀúÀåÇÏ¸é ¹®ÀÚ¿­Àº Java¿¡¼­ ºÒº¯ÇϹǷΠ°¡ºñÁö Ä÷ºÅÍ°¡À̸¦ Áö¿ï ¶§±îÁö ¸Þ¸ð¸®¿¡¼­ »ç¿ëÇÒ ¼ö ÀÖ°í ¹®ÀÚ¿­Àº Àç»ç¿ëÀ» À§ÇØ String Ç®¿¡¼­ »ç¿ëµÇ±â ¶§¹®¿¡ ¿À·¡ µ¿¾È ¸Þ¸ð¸®¿¡ ³²¾ÆÀÖÀ» °¡´É¼ºÀÌ »ó´çÈ÷ ³ô½À´Ï´Ù ±â°£Àº º¸¾È À§ÇùÀ̵˴ϴÙ. ¸Þ¸ð¸® ´ýÇÁ¿¡ ¾×¼¼½º ÇÒ ¼öÀÖ´Â »ç¶÷Àº ÀÏ¹Ý ÅؽºÆ®·Î ¾ÏÈ£¸¦ ãÀ» ¼ö Àֱ⠶§¹®¿¡ ÀÏ¹Ý ÅؽºÆ®º¸´Ù Ç×»ó ¾Ïȣȭ µÈ ¾ÏÈ£¸¦ »ç¿ëÇؾßÇÏ´Â ¶Ç ´Ù¸¥ ÀÌÀ¯ÀÔ´Ï´Ù. ¹®ÀÚ¿­Àº º¯°æµÇÁö ¾Ê±â ¶§¹®¿¡ ¹®ÀÚ¿­ÀÇ ³»¿ëÀ» º¯°æÇÒ ¼öÀÖ´Â ¹æ¹ýÀº ¾ø½À´Ï´Ù. º¯°æÀ¸·Î ÀÎÇØ »õ·Î¿î StringÀÌ »ý¼ºµÇ°í char []¸¦ »ç¿ëÇÏ¸é ¿ä¼Ò¸¦ ¸ðµÎ °ø¹é ¶Ç´Â 0À¸·Î ¼³Á¤ÇÒ ¼ö ÀÖ½À´Ï´Ù. µû¶ó¼­ ¹®ÀÚ ¹è¿­¿¡ ¾ÏÈ£¸¦ ÀúÀåÇÏ¸é ¾ÏÈ£¸¦ µµ¿ëÇÏ´Â º¸¾È À§ÇèÀÌ ºÐ¸íÈ÷ ¿ÏÈ­µË´Ï´Ù.

2. ÀÚ¹Ù ÀÚü´Â char []¸¦ ¹ÝȯÇÏ´Â JPasswordFieldÀÇ getPassword () ¸Þ¼Òµå¿Í º¸¾È»óÀÇ ÀÌÀ¯·Î clear ÅؽºÆ®·Î Æнº¿öµå¸¦ ¹ÝȯÇÏ´Â getText () ¸Þ¼Òµå¸¦ »ç¿ëÇÏ´Â °ÍÀ» ±ÇÀåÇÑ´Ù. Java ÆÀÀÇ Á¶¾ðÀ» µû¸£°í ±×¿¡ ¸Â¼­´Â °ÍÀÌ ¾Æ´Ï¶ó Ç¥ÁØÀ» ÁؼöÇÏ´Â °ÍÀÌ ÁÁ½À´Ï´Ù.

3. ¹®ÀÚ¿­À» »ç¿ëÇÏ¸é ·Î±× ÆÄÀÏÀ̳ª Äֿܼ¡ ÀÏ¹Ý ÅؽºÆ®¸¦ Àμâ ÇÒ À§ÇèÀÌ Ç×»ó ÀÖ½À´Ï´Ù. ±×·¯³ª Array¸¦ »ç¿ëÇÏ¸é ¸Þ¸ð¸® ³»¿ëÀÌ ÀμâµÇ´Â ´ë½Å ¹è¿­ ³»¿ëÀ» ÀμâÇÏÁö ¾Ê½À´Ï´Ù. ÁøÁ¤ÇÑ ÀÌÀ¯´Â ¾Æ´ÏÁö¸¸ ¿©ÀüÈ÷ Àǹ̰¡ ÀÖ½À´Ï´Ù.

    String strPassword="Unknown";
    char[] charPassword= new char[]{'U','n','k','w','o','n'};
    System.out.println("String password: " + strPassword);
    System.out.println("Character password: " + charPassword);

    String password: Unknown
    Character password: [C@110b053

ÂüÁ¶ : http://javarevisited.blogspot.com/2012/03/why-character-array-is-better-than.html Èñ¸ÁÀÌ µµ¿òÀ̵˴ϴÙ.


¹®ÀÚ¿­Àº º¯°æÇÒ ¼ö ¾ø½À´Ï´Ù . Áï ÀÏ´Ü String »ý¼ºÇÏ¸é ´Ù¸¥ ÇÁ·Î¼¼½º°¡ ¸Þ¸ð¸®¸¦ ´ýÇÁ ÇÒ ¼öÀÖ´Â °æ¿ì reflection Á¦¿ÜÇÏ°í´Â °¡ºñÁö ¼öÁýÀÌ ½ÃÀ۵DZâ Àü¿¡ µ¥ÀÌÅ͸¦ Á¦°Å ÇÒ ¼ö ¾ø½À´Ï´Ù.

¹è¿­À» »ç¿ëÇÏ¿© ÀÛ¾÷À» ¿Ï·á ÇÑ ÈÄ¿¡ ¸í½Ã ÀûÀ¸·Î µ¥ÀÌÅ͸¦ Áö¿ï ¼ö ÀÖ½À´Ï´Ù. ¹è¿­À» ¿øÇϴ´ë·Î µ¤¾î ¾µ ¼ö ÀÖÀ¸¸ç ¾ÏÈ£´Â °¡ºñÁö ¼öÁý ÀüÀÌ¶óµµ ½Ã½ºÅÛÀÇ ¾î´À °÷¿¡µµ Á¸ÀçÇÏÁö ¾Ê½À´Ï´Ù.

±×·¸½À´Ï´Ù. ÀÌ°ÍÀº º¸¾È ¹®Á¦ÀÔ´Ï´Ù.ÇÏÁö¸¸ char[] »ç¿ëÇصµ °ø°ÝÀÚÀÇ ±âȸ âÀº ÁÙ¾îµé¸çÀÌ Æ¯Á¤ À¯ÇüÀÇ °ø°Ý¿¡¸¸ ÇØ´çµË´Ï´Ù.

ÁÖ¼®¿¡¼­ ¾ð±ÞÇßµíÀÌ, °¡ºñÁö Ä÷ºÅÍ°¡ ¹è¿­À» À̵¿ÇÏ¸é µ¥ÀÌÅÍ°¡ ¸Þ¸ð¸®¿¡ ´©¶ô µÉ ¼ö ÀÖ½À´Ï´Ù. ÀÌ°ÍÀº ±¸Çö¿¡ µû¶ó ´Ù¸£´Ù°í »ý°¢ÇÕ´Ï´Ù. °¡ºñÁö ¼öÁý±â ´Â ÀÌ·¯ÇÑ »óȲÀ» ÇÇÇϱâ À§ÇØ ¸ðµç ¸Þ¸ð¸®¸¦ Áö¿ï ¼ö ÀÖ½À´Ï´Ù . ±×°ÍÀÌ ½ÇÁ¦·Î ¹ß»ýÇÏ´õ¶óµµ char[] ¿¡ ½ÇÁ¦ ¹®ÀÚ°¡ °ø°Ý âÀ¸·Î Æ÷ÇÔ µÈ ½Ã°£Àº ¿©ÀüÈ÷ ​​ÀÖ½À´Ï´Ù.


1) ¾ÏÈ£¸¦ ÀÏ¹Ý ÅؽºÆ®·Î ÀúÀåÇÏ¸é ¹®ÀÚ¿­ÀÌ Java¿¡¼­ ºÒº¯ÇϹǷΠ°¡ºñÁö ¼öÁý±â°¡ ¾ÏÈ£¸¦ Áö¿ï ¶§±îÁö ¸Þ¸ð¸®¿¡¼­ »ç¿ëÇÒ ¼ö ÀÖ°í ¹®ÀÚ¿­Àº Àç»ç¿ëÀ» À§ÇØ ¹®ÀÚ¿­ Ç®¿¡¼­ »ç¿ëµÇ±â ¶§¹®¿¡ ¸Þ¸ð¸®¿¡ ³²¾ÆÀÖÀ» °¡´É¼ºÀÌ »ó´çÈ÷ ³ô½À´Ï´Ù Àå±â°£ µ¿¾È º¸¾È À§ÇùÀ̵˴ϴÙ. ¸Þ¸ð¸® ´ýÇÁ¿¡ ¾×¼¼½º ÇÒ ¼öÀÖ´Â »ç¶÷Àº ÀÏ¹Ý ÅؽºÆ®·Î ¾ÏÈ£¸¦ ãÀ» ¼ö Àֱ⠶§¹®¿¡ ÀÏ¹Ý ÅؽºÆ®º¸´Ù Ç×»ó ¾Ïȣȭ µÈ ¾ÏÈ£¸¦ »ç¿ëÇؾßÇÏ´Â ¶Ç ´Ù¸¥ ÀÌÀ¯ÀÔ´Ï´Ù. ¹®ÀÚ¿­Àº ºÒº¯À̹ǷÎ, StringÀÌ º¯°æ µÉ ¼öÀÖ´Â ¹æ¹ýÀº ¾ø½À´Ï´Ù. ¿Ö³ÄÇÏ¸é º¯°æÀ¸·Î ÀÎÇØ »õ·Î¿î StringÀÌ »ý¼º µÉ °ÍÀÌ°í, char [] ÀÏ °æ¿ì¿¡´Â ¸ðµç ¿ä¼Ò¸¦ ​​°ø¹éÀ̳ª 0À¸·Î ¼³Á¤ÇÒ ¼ö ÀÖ½À´Ï´Ù. µû¶ó¼­ ¹®ÀÚ ¹è¿­¿¡ ¾ÏÈ£¸¦ ÀúÀåÇÏ¸é ¾ÏÈ£¸¦ µµ¿ë ÇÒ ¶§ º¸¾È À§ÇèÀÌ ÁÙ¾î µì´Ï´Ù.

2) Java ÀÚü´Â char []¸¦ ¹ÝȯÇÏ´Â JPasswordFieldÀÇ getPassword () ¸Þ¼Òµå¿Í º¸¾È ÀÌÀ¯¸¦ ³ªÅ¸³»´Â ÀÏ¹Ý ÅؽºÆ®·Î Æнº¿öµå¸¦ ¹ÝȯÇÏ´Â getText () ¸Þ¼Òµå¸¦ »ç¿ëÇÏ´Â °ÍÀ» ±ÇÀåÇÑ´Ù. Java ÆÀÀÇ Á¶¾ðÀ» µû¸£°í ¹Ý´ëÇÏ´Â °ÍÀÌ ¾Æ´Ï¶ó Ç¥ÁØÀ» ÁؼöÇÏ´Â °ÍÀÌ ÁÁ½À´Ï´Ù.


javaÀÇ ¹®ÀÚ¿­Àº º¯°æ ºÒ°¡´ÉÇÕ´Ï´Ù. µû¶ó¼­ ¹®ÀÚ¿­ÀÌ »ý¼º µÉ ¶§¸¶´Ù °¡ºñÁö ¼öÁý µÉ ¶§±îÁö ¸Þ¸ð¸®¿¡ ³²¾Æ ÀÖ½À´Ï´Ù. µû¶ó¼­ ¸Þ¸ð¸®¿¡ ¾×¼¼½ºÇÏ´Â ¸ðµç »ç¿ëÀÚ´Â ¹®ÀÚ¿­ÀÇ °ªÀ» ÀÐÀ» ¼ö ÀÖ½À´Ï´Ù.
¹®ÀÚ¿­ÀÇ °ªÀÌ ¼öÁ¤µÇ¸é »õ·Î¿î ¹®ÀÚ¿­ÀÌ »ý¼ºµË´Ï´Ù. µû¶ó¼­ ¿ø·¡ °ª°ú ¼öÁ¤ µÈ °ªÀº °¡ºñÁö ¼öÁý µÉ ¶§±îÁö ¸Þ¸ð¸®¿¡ ³²¾Æ ÀÖ½À´Ï´Ù.

¹®ÀÚ ¹è¿­À» »ç¿ëÇÏ¸é ¾ÏÈ£ÀÇ ¿ëµµ°¡ Á¤ÇØÁö¸é ¹è¿­ÀÇ ³»¿ëÀ» ¼öÁ¤Çϰųª Áö¿ï ¼ö ÀÖ½À´Ï´Ù. ¾î·¹ÀÌÀÇ ¿ø·¡ ³»¿ëÀº °¡ºñÁö ÄÝ·º¼ÇÀÌ ¼öÁ¤µÇ±â Àü¿¡ ¸Þ¸ð¸®¿¡¼­ ¹ß°ßµÇÁö ¾Ê½À´Ï´Ù.

º¸¾È»óÀÇ ÀÌÀ¯·Î ¹®ÀÚ ¹è¿­·Î ¾ÏÈ£¸¦ ÀúÀåÇÏ´Â °ÍÀÌ ÁÁ½À´Ï´Ù.


¹®ÀÚ¿­Àº º¯°æÇÒ ¼ö ¾øÀ¸¸ç ÀÏ´Ü ¸¸µé¾îÁö¸é º¯°æÇÒ ¼ö ¾ø½À´Ï´Ù. ¾ÏÈ£·Î ¹®ÀÚ¿­À» ¸¸µé¸é ÈüÀ̳ª ¹®ÀÚ¿­ Ç®¿¡ ´ëÇÑ ¾ÏÈ£¿¡ ´ëÇÑ ÂüÁ¶°¡ ´©¶ôµË´Ï´Ù. ÀÌÁ¦ ´©±º°¡°¡ Java ÇÁ·Î¼¼½ºÀÇ Èü ´ýÇÁ¸¦ °¡Á® ¿Í¼­ÁÖÀÇ ±í°Ô ½ºÄµÇÏ¸é ¾ÏÈ£¸¦ ÃßÃø ÇÒ ¼ö ÀÖ½À´Ï´Ù. ¹°·Ð ÀÌ·¯ÇÑ »ç¿ëµÇÁö ¾ÊÀº ¹®ÀÚ¿­Àº °¡ºñÁö ¼öÁýµÇÁö¸¸ GC°¡ ½ÇÇàµÇ´Â½Ã±â¿¡ µû¶ó ´Ù¸¨´Ï´Ù.

´Ù¸¥ ÂÊ¿¡¼­´Â char []°¡ ÀÎÁõÀÌ ¿Ï·á µÇ ÀÚ¸¶ÀÚ º¯°æ °¡´ÉÇÕ´Ï´Ù. ¸ðµç MÀ̳ª ¹é ½½·¡½Ã¿Í °°Àº ¹®ÀÚ·Î µ¤¾î ¾µ ¼ö ÀÖ½À´Ï´Ù. ÀÌÁ¦ ´©±º°¡ Èü ´ýÇÁ¸¦ °É´õ¶óµµ ÇöÀç »ç¿ëµÇÁö ¾Ê´Â ¾ÏÈ£¸¦ ¾òÀ» ¼ö ¾øÀ» ¼öµµ ÀÖ½À´Ï´Ù. ÀÌ·¸°ÔÇϸé GC°¡ ¼öÇàÇϱ⸦ ±â´Ù¸®´Â °Í°ú ºñ±³ÇÏ¿© Object ³»¿ëÀ» Áö¿ì´Â °Í°ú °°Àº Àǹ̿¡¼­ ´õ ¸¹Àº Á¦¾î°¡ °¡´ÉÇÕ´Ï´Ù.


ª°í ¼ÖÁ÷ÇÑ ´ë´äÀº °´Ã¼°¡¾ø´Â char[]µ¿¾È º¯°æ µÉ ¼ö Àֱ⠶§¹® ÀÔ´Ï´Ù String.

StringsÀÚ¹Ù¿¡¼­ ºÒº¯ °³Ã¼ÀÔ´Ï´Ù. ±×·¡¼­ ÀÏ´Ü »ý¼º µÈ ÈÄ¿¡´Â ¼öÁ¤ÇÒ ¼ö ¾øÀ¸¹Ç·Î ³»¿ëÀ» ¸Þ¸ð¸®¿¡¼­ Á¦°ÅÇÏ´Â À¯ÀÏÇÑ ¹æ¹ýÀº °¡ºñÁö ¼öÁýÇÏ´Â °ÍÀÔ´Ï´Ù. ±×·¯¸é °´Ã¼¿¡ ÀÇÇØ ÇØÁ¦ µÈ ¸Þ¸ð¸®¸¦ µ¤¾î ¾µ ¼ö ÀÖ°í µ¥ÀÌÅÍ°¡ »ç¶óÁö°ÔµË´Ï´Ù.

Java¿¡¼­ °¡ºñÁö ÄÝ·º¼ÇÀº º¸Àå µÈ °£°ÝÀ¸·Î ¹ß»ýÇÏÁö ¾Ê½À´Ï´Ù. ´Â StringÀÌ·¸°Ô ¿À·£ ½Ã°£ µ¿¾È ¸Þ¸ð¸®¿¡ À¯Áö ¼ö ÀÖÀ¸¸ç, ÇÁ·Î¼¼½º°¡ÀÌ ½Ã°£ µ¿¾È Ãæµ¹ÇÏ´Â °æ¿ì, ¹®ÀÚ¿­ÀÇ ³»¿ëÀÌ ¸Þ¸ð¸® ´ýÇÁ ¶Ç´Â ÀϺΠ·Î±×¿¡ ³¡³¾ ¼ö ÀÖ½À´Ï´Ù.

¹®ÀÚ ¹è¿­À» »ç¿ëÇÏ¸é ¾ÏÈ£¸¦ Àаí ÃÖ´ëÇÑ »¡¸® ÀÛ¾÷À» ¿Ï·á ÇÑ ´ÙÀ½ Áï½Ã ³»¿ëÀ» º¯°æÇÒ ¼ö ÀÖ½À´Ï´Ù.