ÀÚ¹Ù °´Ã¼¿Í ¸Þ¼Òµå ±âº»ÀûÀΰŠÁú¹®ÇÕ´Ï´Ù.

   Á¶È¸ 3326   Ãßõ 0    

https://wikidocs.net/225 (977)

 public class Test {

    int a;  // 객체변수 a

    public void vartest(Test test) {
        test.a++;
    }

    public static void main(String[] args) {
        Test myTest = new Test();
        myTest.a = 1;
        myTest.vartest(myTest);
        System.out.println(myTest.a);
    }
}


질문1. myTest.a = 1; 은 객체변수에 1을 대입하고 끝나는 건가요?

질문2. myTest.vartest(myTest); 에서 메소드를 호출->메소드에서 Test클래스 참조-> 메소드 내에서 a값은 2로 상승된값이 myTest로 2가 되는건가요?

       객체.메소드명() 괄호안에는 결과값의 형태로 받겠다는건가요?

질문3. 마지막 출력문에서 괄호를 (myTest)라고 하니 에러는 나오지 않았습니다. 하지만 'Test@2a139a55'라는 결과물이 나왔습니다.

println에서 myTest.a와 그냥 myTest로 출력했을때 에러는 나지 않았지만 다른 결과물이 나왔습니다. 왜인가요?

ps. 자바를 배우고 있는 초보자 입니다. 지금까지 공부하면서 오늘 약간 막히는 부분이 생기네요. 이전에도 도움을 많이 받았는데 처음 배우는것이라 프로그램이 어떻게 돌아가는지 자세하게 알고자 질문을 드렸습니다.

ªÀº±Û Àϼö·Ï ½ÅÁßÇÏ°Ô.
¾È±Ô¹Î 2017-08
Àú´Â Java °³¹ßÀÚ·Î ÀÏÇÏ°í ÀÖ½À´Ï´Ù¸¸, Á¦°¡ µå¸®´Â ÀÇ°ßÀÌ 100% ¸Â´Â ÀÇ°ßÀº ¾Æ´Ò ¼ö ÀÖ´Ù´Â Á¡ ¿°µÎ¿¡ µÎ½Ã°í Âü°í¸¸ ÇØÁֽʽÿÀ.

1,2,3 Áú¹®¿¡ ´äº¯À» µå¸®±âÀü¿¡.. ÇÑ°¡Áö ¸»¾¸µå¸®ÀÚ¸é,
ÀϹÝÀûÀ¸·Î main ÇÔ¼ö°¡ Æ÷ÇÔµÈ Å¬·¡½º ´Â ÇØ´ç ÇÁ·Î±×·¥¿¡¼­ ´Ü 1°³ ÀÎ °ÍÀÌ ÀϹÝÀûÀ̸ç, ¿ëµµ´Â ´Ù¸¥ Ŭ·¡½ºµéÀ» ½ÇÇàÇÏ´Â ½ÃÀÛÁ¡À¸·Î »ç¿ëÇÕ´Ï´Ù.
ÇöÀç ÀÛ¼ºÇϽŠ°ÍÀ» º¸¸é, main ÇÔ¼ö°¡ Æ÷ÇÔµÈ Test Ŭ·¡½º¸¦ ´Ù½Ã main ÇÔ¼ö¿¡¼­ »ý¼ºÇÏ°í Àִµ¥, ÀÌ´Â ¿ÀÈ÷·Á ´õ È¥¶õ½º·¯¿ï ¼ö ÀÖÀ¸¸ç, ¹ø°Å·Î¿ì½Ã´õ¶óµµ, Test Ŭ·¡½º ¿Ü¿¡ TestCalc µîÀÇ Å¬·¡½º¿¡¼­ ¸Þ¼Òµå¸¦ ´Ù½Ã ÀÛ¼ºÇϽŠµÚ¿¡ Test Ŭ·¡½ºÀÇ main() ÇÔ¼ö¿¡¼­ TestCalc testCalc = new TestCalc(); Çϼż­ TestCalc ÀÇ ÇÔ¼ö¸¦ È£ÃâÇÏ´Â ¹æ½ÄÀ» ÅÃÇϽô °ÍÀ» Ãßõµå¸³´Ï´Ù. ( Test Ŭ·¡½ºµµ TestMain µîÀ¸·Î º¯°æÇϽøé ÄÚµå °¡µ¶¼ºÀÌ ÁÁ½À´Ï´Ù ^^)

¹øÈ£º°·Î ´äº¯µå¸³´Ï´Ù.

1. ¸Â½À´Ï´Ù. myTest °´Ã¼ÀÇ int Çü º¯¼ö a¿¡ 1À» ÀÔ·ÂÇÕ´Ï´Ù.
2. ÇÔ¼ö¿¡¼­ myTest °´Ã¼¸¦ ÂüÁ¶ÇÏ´Â °ÍÀº ¸Â½À´Ï´Ù¸¸, 2¶ó´Â °ªÀº myTest °´Ã¼ÀÇ a º¯¼öÀÇ °ªÀÌ°í, myTest °´Ã¼ ÀÚüÀÇ °ªÀº ¾Æ´Õ´Ï´Ù.
Test ¶ó´Â Ŭ·¡½ºÀÇ myTest ¶ó´Â °´Ã¼ ³»¿¡ a °ªÀÌ ÀÖ´Â °ÍÀÌ°í, myTest ¶ó´Â °´Ã¼´Â º¯¼ö 'a'¸¦ °¡Áø ÁýÇÕüÀÎ °ÍÀÌÁö a ÀÚü°¡ ¾Æ´Õ´Ï´Ù.
¸¸¾à, Test Ŭ·¡½º¿¡ Ãß°¡·Î b ¶ó´Â ´Ù¸¥ º¯¼ö¸¦ ÀÛ¼ºÇؼ­ a,b ¶ó´Â 2°³ÀÇ º¯¼ö°¡ ÀÖ´Ù°í °¡Á¤Çϸé, myTest °´Ã¼´Â a, b µÎ °¡Áö º¯¼ö¸¦ µ¿½Ã¿¡ °¡Áö°í ÀÖ´Â °´Ã¼°¡ µÉ °ÍÀÔ´Ï´Ù.
 
myTest.vartest(myTest); ¶ó´Â ÇÑÁÙÀ» ³»ºÎÀÇ ¸Þ¼Òµå±îÁö ÇÔ²² Àǹ̸¦ Ç®¾îº¸¸é, ¾Æ·¡¿Í °°½À´Ï´Ù.
"myTest °´Ã¼ÀÇ a º¯¼öÀÇ °ªÀ» 1 Áõ°¡½ÃÄѶó'

±×¸®°í, () °ýÈ£ ¾ÈÀÇ Test test ¶ó´Â Àǹ̴Â, ' ÇØ´ç ¸Þ¼Òµå¿¡¼­ ÂüÁ¶ÇÒ °ªÀ» Test Ŭ·¡½ºÀÇ test¶ó´Â º¯¼ö¸íÀ¸·Î ¸í¸íÇÏ°Ú´Ù' ·Î ÀÌÇØÇÏ½Ã¸é µË´Ï´Ù.

3. 2ÀÇ ´äº¯°ú ÀÌÀ¯°¡ °°½À´Ï´Ù. println( myTest ) ¶ó°í Ãâ·ÂÇϸé myTest ¶ó´Â °´Ã¼ ÀÚüÀÇ 'toString()' À̶ó´Â ¸Þ¼Òµå¸¦ Ãâ·ÂÇÏ°Ô µË´Ï´Ù.
Ãâ·ÂÇüŸ¦ º¸¾ÒÀ»¶§, ³»ºÎÀûÀ¸·Î Ŭ·¡½ºÀ̸§+¸Þ¸ð¸®ÁÖ¼Ò ·Î Ãâ·ÂÇϵµ·Ï toString() ¸Þ¼Òµå°¡ ÀÛ¼ºµÇ¾îÁ® ÀÖÀ» °Ì´Ï´Ù.
(ÀÚ¹ÙÀÇ ¸ðµç °´Ã¼´Â toString() ¸Þ¼Òµå¸¦ °¡Áö°í ÀÖ½À´Ï´Ù.)

Ãß°¡ : ¸¸¾à  println( myTest )  ÇßÀ» ¶§ º¯¼ö aÀÇ °ªÀ» Ãâ·ÂÇÏ°í ½ÍÀ¸½Ã´Ù¸é, '¿À¹ö¶óÀ̵ù' À» »ç¿ëÇÏ½Ã¸é µË´Ï´Ù. ( ¾Æ·¡ÂüÁ¶)
Àǹ̴Â, 'Test ¶ó´Â Ŭ·¡½ºÀÇ °¢ °´Ã¼ÀÇ °ªÀ» String À¸·Î ³ªÅ¸³¾¶§ »ç¿ëÇÏ´Â toString() ÇÔ¼ö¸¦ 'ÀçÁ¤ÀÇ' ÇÏ¿´´Âµ¥ À̶§ a¶ó´Â int Çü ¸â¹öº¯¼ö¸¦ String °ªÀ¸·Î Ãâ·ÂÇ϶ó' ¶ó´Â ¶æ ÀÔ´Ï´Ù.

@Override
    public String toString() {
    return Integer.toString(a);
    }

¸»·Î ¼³¸íÇÏ·Á´Ï±î µÇ°Ô º¹ÀâÇѵ¥.. µÇµµ·Ï ¸¹Àº Ŭ·¡½º¸¦ ¸¸µé¾îº¸½Ã°í, main() ÇÔ¼ö ¿¡¼­ Çϳª¾¿ ½ÇÇàÇغ¸½Ã¸é ÇнÀÈ¿°ú°¡ ÀÖÀ¸½Ç °Ì´Ï´Ù.
±×¸®°í ½ÃÁßÀÇ JAVA ±âÃÊ ¼­ÀûÁß °¡Àå ½±´Ù´Â Ã¥À» Çϳª ±¸¸ÅÇϼż­ ÇØ´ç Äڵ带 Á÷Á¢ ÄÚµù-ÄÄÆÄÀÏ Çغ¸½Ã¸é¼­ Ã¥ÀÇ ¼³¸í°ú ÇÔ²² ¿ø¸®¸¦ ±íÀÌ ÀÌÇØÇϽô °ÍÀÌ °¡Àå ºü¸¥ ÇнÀ¹ýÀ̶ó°í »ý°¢ÇÕ´Ï´Ù.  È­ÀÌÆÃ~ ÀÔ´Ï´Ù ^^
ÀÌÁ¾±Ù 2017-08
°¨»çÇÕ´Ï´Ù.


QnA
Á¦¸ñPage 1849/5682
2015-12   1488972   ¹é¸Þ°¡
2014-05   4952435   Á¤ÀºÁØ1
2017-08   3542   ´ëÇѹα¹
2017-08   3551   ¶Ñ¶Ñ±è´ë¿ø
2017-08   6356   ¹«¾Æ
2017-08   3701   ¾Ë¼ö¾øÀ½
2017-08   2976   ȲÀ籤
2017-08   5483   ½½·¡µå
2017-08   5370   ±ô¦
2017-08   3040   AKAÁö´Ï
2017-08   2935   ÃÑ°¢
2017-08   3327   inquisitive
2017-08   3303   Çϼ¿È£ÇÁ
2017-08   3523   ÀÚ¿¬ÀÎ
2017-08   4500   ¾Æ½ÎÁ¶Äí³ª
2017-08   3387   °¡ºü·Î±¸³ª
2017-08   3729   µþ±â´ëÀå
2017-08   3628   ±è°Ç¿ì
2017-08   3287   Çý¸²À̾ƺü
2017-08   3058   klein
2017-08   3393   KissÁö´Ï
2017-08   4182   ±è°Ç¿ì