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

   Á¶È¸ 3155   Ãßõ 0    

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

 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 1792/5625
2015-12   1236285   ¹é¸Þ°¡
2014-05   4689929   Á¤ÀºÁØ1
2015-07   3757   flexx
2016-04   3757   ÀÌ°ÇÈñ
2014-10   3757   ³ªÆÄÀÌ°­½ÂÈÆ
2016-06   3757   ¾ÆÀÌõ
2017-05   3757   MLbioinfo
2014-04   3757   ¼¾Ä¡
2015-12   3757   izegtob
2016-07   3757   Ãʺ¸IT
2016-06   3757   ±è°Ç¿ì
2015-09   3757   ±è°Ç¿ì
2020-07   3757   VSPress
2016-01   3757   ǪÇÏÈ÷
2015-08   3757   Àü¼³¼ÓÀǹ̡¦
2017-08   3757   2cpumem
2018-01   3757   neoq
2018-09   3757   À¯Á¤ÇØ
2018-04   3757   ¹Ú¼º¸¸
2017-11   3757   ½ÅÀº¿Ö
2015-10   3757   ºñÁµå
2019-03   3757   newretrowave