¼Ò¼³°°ÀºÀÚ¹Ù2ºÎ  Á¦10Àå ObjectŬ·¡½º  10.2 equals¸Þ¼­µå  

  

10.2 equals()

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´Â ÀçÁ¤ÀǸ¦ ÁÖ¸ñÀûÀ¸·Î Çϰí ÀÖ´Â °ÍÀÌÁö¿ä.

 

 

 

 

10.3 toString()

 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ºÎ
ÀúÀÚ:ÃÖ¿µ°ü