Object Ŭ·¡½º°¡ Á¦°øÇØ ÁÖ´Â equals ¸Þ¼Òµå´Â ºñ±³µÇ´Â µÎ °´Ã¼°¡ °®´Â °ªÀÌ °°ÀºÁö¸¦ °Ë»çÇϱâ À§ÇØ »ç¿ëµË´Ï´Ù. Á¦°¡ °¡Áö°í ÀÖ´Â °ªÀÌ °°ÀºÁö¸¦ ºñ±³ÇÑ´Ù°í Çß½À´Ï´Ù. À̰ÍÀº ¡°==¡± ºñ±³¿¬»êÀÚ¿Í ±¸ºÐÇØ¾ß Çϱ⠶§¹®ÀÔ´Ï´Ù. ¸¸¾à¿¡ µÎ °´Ã¼¸¦ ºñ±³ÇÒ ¶§ ¡°==¡±¿¬»êÀÚ¸¦ »ç¿ëÇÏ¸é °´Ã¼ÀÇ ·¹ÆÛ·±½º¸¦ ºñ±³ÇÕ´Ï´Ù. ±×¸®°í equals¸Þ¼µå¸¦ »ç¿ëÇÏ¸é °´Ã¼³»ÀÇ °ªÀ» ºñ±³ÇÕ´Ï´Ù. ´ÙÀ½Àº equals¿Í ¡°==¡±¿¬»êÀÚÀÇ ºñ±³¸¦ Å×½ºÆ®ÇÏ´Â ¿¹Á¦ÀÔ´Ï´Ù.
EqualObjectMain.java |
public class EqualObjectMain{ public static void main(String[] args){ String str1 = new String("¾È³çÇϼ¼¿ä"); String str2 = new String("¾È³çÇϼ¼¿ä"); System.out.println("str1" + str1);//ÂüÁ¶°ªÀÇ ºñ±³ System.out.println("str2" + str2);//³»¿ëÀÇ ºñ±³ System.out.println("str1==str2:"+(str1==str2)); System.out.println("str1.eqauls(str2):"+ str1.equals(str2)); } } |
C:\examples\10.Object>javac EqualObjectMain.java C:\examples\10.Object>java EqualObjectMain str1¾È³çÇϼ¼¿ä str2¾È³çÇϼ¼¿ä str1==str2:false str1.eqauls(str2):true |
¡°==¡± ¿¬»êÀÚ´Â ÂüÁ¶°ªÀ» ºñ±³Çϰí Àֱ⠶§¹®¿¡ str1°ú str2ÀÇ ¡°==¡±ºñ±³´Â falseÀÔ´Ï´Ù. ±×¸®°í equals´Â ¹®ÀÚ¿ÀÇ ³»¿ëÀ» ºñ±³Çϱ⠶§¹®¿¡ ÂüÀÌ µÇ´Â °ÍÀÔ´Ï´Ù.
n System.out.println("str1==str2:"+(str1==str2));
n System.out.println("str1.eqauls(str2):"+ str1.equals(str2));
±×·±µ¥ Çϳª »ý°¢ÇÏ°í ³Ñ¾î°¡¾ß µÇ´Â ºÎºÐÀÌ ÀÖ½À´Ï´Ù. equals°¡ ³»¿ëÀ» ºñ±³ÇÑ´Ù¸é, Ŭ·¡½º ³»¿¡ ¾î¶² °ªÀ» ºñ±³ÇÏ´ÂÁö ¾î¶»°Ô ¾Ë ¼ö ÀÖÀ»±î¿ä? ÀÌ ÇØ´äÀº Sun»ç¿¡¼ StringŬ·¡½ºÀÇ equals¸Þ¼µå¸¦ ÀçÁ¤ÀÇÇÏ¿© ¹®ÀÚ¿À» ³»¿ëÀ» ºñ±³Çϵµ·Ï ´Ù½Ã ÇÁ·Î±×·¥ Ç߱⠶§¹®ÀÔ´Ï´Ù. Áï, equals´Â Á¤ÇØÁø ºñ±³°¡ ¾Æ´Ï°í ¿©·¯ºÐÀÌ Á÷Á¢ ÄÚµùÇÒ ¼ö ÀÖ´Ù´Â °á·ÐÀÌ ³ª¿É´Ï´Ù. Á÷Á¢ equals¸¦ ÀÌ¿ëÇØ¼ ºñ±³ÇÏ´Â ·çƾÀ» »õ·Î Çϳª ¸¸µé¾î º¸µµ·Ï ÇÏÁÒ.
EqualsOverride.java |
class EqualsOverride{ private String name; private int id; public EqualsOverride(String name, int id){ this.name = name; this.id = id; } public String getName(){ return name; } public boolean equals(Object obj){ if( obj instanceof EqualsOverride){ EqualsOverride eo =(EqualsOverride)obj; return name.equals(eo.getName()); }else{ return false; } } public String toString(){ return name + " " + id; } } public class EqualsOverrideMain{ public static void main(String[] args){ EqualsOverride e1 = new EqualsOverride("È«±æµ¿", 1000); EqualsOverride e2 = new EqualsOverride("È«±æµ¿", 2000); System.out.println("e1" + e1); System.out.println("e2" + e2); System.out.println("e1==e2:"+(e1==e2)); System.out.println("e1.eqauls(e2):"+ e1.equals(e2)); } } |
C:\examples\10.Object>javac EqualsOverrideMain.java C:\examples\10.Object>java EqualsOverrideMain e1:È«±æµ¿ 1000 e2:È«±æµ¿ 2000 e1==e2:false e1.eqauls(e2):true |
À§ÀÇ Äڵ忡¼ equals¸Þ¼µå¸¦ ÀçÁ¤ÀÇÇϰí ÀÖ½À´Ï´Ù. ¿ì¸®µé ¸¸ÀÇ equals¸¦ ´Ù½Ã ¸¸µç °ÍÀÌÁÒ. ÀÌ equals´Â ³»ºÎ¿¡¼ ¸Å°³º¯¼ö·Î ÀÚ½ÅÀÇ °Í°ú ºñ±³ÇÒ °´Ã¼¸¦ Çϳª ¹Þ¾Æ µéÀ̰í ÀÖ½À´Ï´Ù. ÀÌ °´Ã¼´Â
n public boolean equals(Object obj)
¸Å°³º¯¼ö·Î ¾î¶°ÇÑ °´Ã¼ÀÇ ÇüÀÌ µé¾î¿À´õ¶óµµ ObjectÇüÀ¸·Î UpcastingÀÌ µË´Ï´Ù. ÀÌ·¸°Ô µÇ¸é equals³»ºÎ¿¡¼´Â ¸Å°³º¯¼öÀÇ ÇüÀ» ¾Ë ¼ö ¾ø½À´Ï´Ù. ±×·¡¼ ¸Å°³º¯¼öÀÇ ÇüÀ» È®ÀÎÇϱâ À§Çؼ instanceof¶ó´Â Ű¿öµå¸¦ »ç¿ëÇÕ´Ï´Ù. instanceof´Â ¸Å°³º¯¼ö·Î µé¾î¿À´Â obj°¡ EqualsOverrideÇüÀÎÁö Çüºñ±³¸¦ ÇÏ°Ô µË´Ï´Ù.
n if( obj instanceof EqualsOverride)
¸¸¾à ÇüÀÌ °°´Ù¸é trueÀ̰í ÇüÀÌ ´Ù¸£´Ù¸é false¸¦ ¸®ÅÏÇÕ´Ï´Ù. Áï, objÀÇ ¿ø·¡ÀÇ ÇüÀ» ¾Ë°íÀÚÇÏ´Â °ÍÀÌÁö¿ä. ±×¸®°í obj°¡ EqualsOverrideÇüÀ̶ó¸é ´Ù½Ã ³»ºÎ¿¡¼ DowncastingÀ»ÇÏ°Ô µË´Ï´Ù.
n qualsOverride eo =(EqualsOverride)obj;
ÀÌ·¸°Ô ´Ù¿îij½ºÆÃÀ» ÇÏ´Â ÀÌÀ¯´Â ¹Ù·Î EqualsOverrideÀÇ ¸Þ¼µå¸¦ »ç¿ëÇϱâ À§Çؼ ÀÔ´Ï´Ù. ¸¸¾à obj°¡ ObjectÇüÀ̶ó¸é EqualsOverride¸Þ¼µå¸¦ »ç¿ëÇÒ ¼ö ¾ø½À´Ï´Ù. ±×¸®°í ³ ÈÄ µÎ°´Ã¼³»ÀÇ ¸â¹öº¯¼öÁß name¸â¹ö¸¸À» ºñ±³ÇÏ´Â °ÍÀÔ´Ï´Ù.
n return name.equals(eo.getName());
¿ì¸®°¡ ¸¸µç equals¸Þ¼µå´Â °´Ã¼ÀÇ À̸§¸¸À» ºñ±³ÇÏ´Â ¸Þ¼µå·Î ÀçÁ¤ÀÇ µÈ °ÍÀÔ´Ï´Ù. ÀÌ·¸°Ô equals¸¦ ÀçÁ¤ÀÇÇØ¼ »ç¿ëÇϴ Ŭ·¡½º°¡ ¸î Á¾·ù ÀÖ½À´Ï´Ù. ¾Æ·¡ÀÇ Å¬·¡½ºµéÀº ³»ºÎÀûÀ¸·Î equals¸¦ ÀçÁ¤ÀÇÇÑ Å¬·¡½ºµéÀÌ¸ç ¹«¾ùÀ» ºñ±³ÇÏ´ÂÁö º¸¿© ÁÖ°í ÀÖ½À´Ï´Ù.
n String °´Ã¼: °´Ã¼ ³»ÀÇ ¹®ÀÚ¿ÀÌ °°À¸¸é Âü
n Wrapper °´Ã¼: Integer, Long, Float, Double, Character, Boolean µîÀÇ °¢ Wrapper °´Ã¼°¡ °¡Áö°í ÀÖ´Â ±âº»ÀûÀÎ µ¥ÀÌÅÍ ÇüÀÇ °ªÀÌ °°À¸¸é Âü
n BitSet °´Ã¼: Ç¥ÇöÇϰí ÀÖ´Â ºñÆ®¿ÀÌ °°À¸¸é Âü
n Date °´Ã¼: °°Àº ³¯Â¥¿Í ½Ã°£À» ³ªÅ¸³»°í ÀÖÀ¸¸é Âü
n File °´Ã¼: °°Àº °æ·Î¸í(PATH)¸¦ Ç¥ÇöÇϰí ÀÖÀ¸¸é Âü
n String °´Ã¼: Ç¥ÇöÇϰí ÀÖ´Â ¹®ÀÚ¿ÀÌ °°À¸¸é Âü
±×·±µ¥ ¿Ö equals¸Þ¼µå¸¦ ¸¸µé¾î µÎ¾úÀ»±î¿ä? ±×³É Áö³ª°¡´Â ±æ¿¡ »ý°¢ÇØ º¸°í ³Ñ¾î°¡ÁÒ. ÇØ´äÀº °£´ÜÇÕ´Ï´Ù. Ŭ·¡½º´Â ¸¹Àº µ¥ÀÌÅ͸¦ ´ã°í Àֱ⠶§¹®¿¡ ±â²¯ ºñ±³Çغ¸¾Æ¾ß ÂüÁ¶°ª ºñ±³ ¹Û¿¡´Â ÇÒ ¼ö ¾ø½À´Ï´Ù. ¸Þ¸ð¸® ºñ±³ÁÒ. ±×¸®°í Ŭ·¡½º ³»¿¡ µ¥ÀÌÅͰ¡ ¸¹±â ¶§¹®¿¡ ¾î´À°ÍÀ» ºñ±³ÇØ¾ß ÇÒ Áö ³°¨ÇÑ °ÍÀÌÁö¿ä. ±×·¡¼ Â÷¶ó¸® »ç¿ëÀÚµéÀÌ ¾Ë¾Æ¼ ºñ±³ÇÏ´Â ¹æ¹ýÀ» ¸¸µé¾î¼ »ç¿ëÇ϶ó°í equals¶ó´Â ¸Þ¼µå¸¦ ¸¸µé¾î µÐ °ÍÀÔ´Ï´Ù. equals´Â ÀçÁ¤ÀǸ¦ ÁÖ¸ñÀûÀ¸·Î Çϰí ÀÖ´Â °ÍÀÌÁö¿ä.
toString¸Þ¼µåµµ equals¿Í °°ÀÌ ÀçÁ¤ÀÇÇØ¼ »ç¿ëÇÕ´Ï´Ù. ÀÌ ¸Þ¼µåÀÇ ÁÖ¸ñÀûÀº Ŭ·¡½ºÀÇ ¿ä¾àÁ¤º¸¸¦ Ãâ·ÂÇÏ´Â ¿ëµµ·Î ¸¹ÀÌ »ç¿ëÇÕ´Ï´Ù. ÀÌ ¸Þ¼µå¸¦ ÀçÁ¤ÀÇÇÏ¿© ´Ù¸¥ StringÀ» ¹ÝȯÇÏ´Â ¸Þ¼µå·Î ¸¸µé¾ú´Ù¸é System.out.println¿¡¼ °´Ã¼ ±× ÀÚü¸¦ Ãâ·ÂÇϸé toStringÀÌ È£ÃâµÇ¾î Ãâ·Â µË´Ï´Ù. ´ÙÀ½ ¿¹Á¦¸¦ Çѹø º¸½Ã±â ¹Ù¶ø´Ï´Ù.
EqualsOverride.java |
class EqualsOverride{ private String name; private int id; public EqualsOverride(String name, int id){ this.name = name; this.id = id; } public String toString(){ return name + " " + id; } } public class EqualsOverrideMain{ public static void main(String[] args){ EqualsOverride e1 = new EqualsOverride("È«±æµ¿", 1000); EqualsOverride e2 = new EqualsOverride("È«±æµ¿", 2000); System.out.println("e1:" + e1); System.out.println("e2:" + e2); System.out.println("e2.toString()" + e2.toString()); } } |
C:\examples\10.Object>javac EqualsOverrideMain.java C:\examples\10.Object>java EqualsOverrideMain e1:È«±æµ¿ 1000 e2:È«±æµ¿ 2000 e2.toString():È«±æµ¿ 2000 |
ÀÌ ¿¹Á¦´Â 10.2Àý¿¡¼ equals¸Þ¼µå¸¸À» »« °ÍÀÔ´Ï´Ù. toString¸Þ¼µå¸¦ ÀçÁ¤ÀÇÇϰí ÀÖ½À´Ï´Ù. ±×¸®°í toString¿¡´Â ¸â¹öº¯¼öÀÎ name°ú id¸¦ ¹¾î¼ ¸®ÅÏÇϰí ÀÖ½À´Ï´Ù.
n public String toString(){
n return name + " " + id;
n }
±×¸®°í °´Ã¼¸¦ ¸¸µé¾î¼ Ãâ·ÂÇÒ ¶§ °´Ã¼ ±× ÀÚü¸¦ Ãâ·ÂÇϰí ÀÖ½À´Ï´Ù. ÀÌ ¶§ println¿¡¼´Â toString¸Þ¼µå¸¦ È£ÃâÇÏ°Ô µË´Ï´Ù. ¹°·Ð toString¸Þ¼µå¸¦ Á÷Á¢È£ÃâÇØµµ °°Àº °á°ú°¡ ³ª¿É´Ï´Ù.
n System.out.println("e1:" + e1);
n System.out.println("e2:" + e2);
n System.out.println("e2.toString()" + e2.toString());
¸¸¾à, ¿©·¯ºÐÀÇ Å¬·¡½º¸¦ Ãâ·ÂÇßÀ» ¶§ ¾î¶°ÇÑ Á¤º¸¸¦ º¸¿©ÁØ´Ù¸é ¾î¶² °ªÀ» Ãâ·ÂÇϰí½ÍÀ¸½Ê´Ï±î? ¾Æ¸¶µµ ¿©·¯ºÐÀº ±× Ŭ·¡½ºÀÇ °¡Àå ´Ü¼øÇÑ Á¤º¸¸¸À» Ãâ·ÂÇÏ´Â toStringÀ» ¸¸µé°Å¶ó°í »ý°¢µË´Ï´Ù. ºñ½ÁÇÑ ¿¹·Î new Date()¶ó°í ÇØ¼ °´Ã¼¸¦ »ý¼ºÇÏ°í ¹Ù·Î Ãâ·ÂÇØ º¸½Ê½Ã¿À. ¸ðµç ³¯Â¥ÀÇ Á¤º¸°¡ ÀüºÎÃâ·ÂµË´Ï´Ù. À̰͵µ toStringÀ» ÀçÁ¤ÀÇÇØ¼ ³¯Â¥¿¡ ¸Â´Â Á¤º¸¸¦ Ãâ·ÂÇÏ´Â °ÍÀ¸·Î ¹Ù²Û °ÍÀÔ´Ï´Ù.
DateMain.java |
import java.util.Date; public class DateMain{ public static void main(String[] args){ System.out.println(new Date()); System.out.println(new Date().toString()); } } |
C:\examples\10.Object>javac DateMain.java C:\examples\10.Object>java DateMain Sun Jun 24 23:40:36 GMT+09:00 2001 Sun Jun 24 23:40:36 GMT+09:00 2001 |
¿ì¸®´Â equals¿Í toString¸Þ¼µå¿¡ ´ëÇØ¼ ¾Ë¾Æ º¸¾Ò½À´Ï´Ù. ÀÌ µÎ ¸Þ¼µå´Â ¾ÆÁÖ ±âº»ÀûÀÎ ±â´ÉÀ» °¡Áö°í ÀÖÀ¸¸ç ÀçÁ¤ÀÇÇØ¼ ¸¹ÀÌ »ç¿ëÇÑ´Ù´Â °øÅëÁ¡ÀÌ ÀÖ½À´Ï´Ù. ¹°·Ð, »ç¿ëÇÏÁö ¾Ê¾Æµµ ¹«°üÇÏÁö¸¸ À߸¸ »ç¿ëÇÑ´Ù¸é ¾ÆÁÖ À¯¿ëÇÑ ¸éÀÌ ¸¹½À´Ï´Ù. ´ÙÀ½À¸·Î hashCode¿Í finalize¸Þ¼µå¿¡ ´ëÇØ¼ ¾Ë¾Æ º¸µµ·Ï ÇϰڽÀ´Ï´Ù.
jabookÀúÀÚ¸íÇÔ |
Á¦¸ñ:¼Ò¼³°°ÀºÀÚ¹Ù2ºÎ ÀúÀÚ:ÃÖ¿µ°ü |