인프런 커뮤니티 질문&답변

ruddhrhdwn님의 프로필 이미지
ruddhrhdwn

작성한 질문수

나도코딩의 자바 기본편 - 풀코스 (20시간)

메소드

8강. 클래스 강의 중 return 값을 갖는 메소드

작성

·

309

0

 안녕하세요,

8강. 클래스 강의 중 return 값을 갖는 메소드 관련하여 질문 드립니다.

 

class에서 return값을 갖는 getVideoFileCount 메소드를 정의하고, main 영역에서 호출 시에

int fileCount = b1.getVideoFileCount(type: 1); 처럼

b1.getVideoFileCount의 값을 저장하는 int fileCount 변수를 따로 정의해주었는데 그 이유가 무엇인지 궁금합니다. 만약 이와 같이 저장해주는 변수를 지정하지 않을 경우 어떻게 되는지, 혹시 return 값이 있는 메소드는 대게 저장하는 변수를 설정해주는 것인지 궁금합니다.

 

감사합니다.

답변 1

1

나도코딩님의 프로필 이미지
나도코딩
지식공유자

※ 과거에 있었던 유사한 질문에 대한 답변글을 일부 수정하여 제공합니다. 참고 부탁드려요 😉
https://www.inflearn.com/questions/797229

안녕하세요?
비교를 위해서 반환값이 없는 insertMemoryCard() 메소드와 반환값이 있는 getVideoFileCount() 메소드를 먼저 적어보겠습니다.

void insertMemoryCard(int capacity) {
    System.out.println("메모리 카드가 삽입되었습니다.");
    System.out.println("용량은 " + capacity + "GB 입니다.");
}

int getVideoFileCount(int type) {
    if (type == 1) {
        return 9;
    }
    else if (type == 2) {
        return 1;
    }
    return 10;
}

getVideoFileCount() 앞에 적힌 int 는 반환형이며 이 메소드는 동작을 수행 하고 나서 정수형 값을 반환하게 됩니다. 이와 같이 반환값이 존재하는 메소드의 경우 보통은 메소드를 호출하는 쪽에서 반환값을 받아서 계속 사용을 합니다. 그렇기 때문에 반환값이 없는 insertMemoryCard() 메소드는 호출하는 쪽에서 별도의 변수를 선언하지 않았고, 정수형 값을 반환하는 getVideoFileCount() 메소드는 앞에 변수를 선언하였습니다.

b1.insertMemoryCard(256);

int fileCount = b1.getVideoFileCount(1);

메소드 내에서 수행된 동작의 결과를 반환받아서 계속 사용하기 위해서는 이렇게 해주셔야 합니다. 그러나 수행된 동작의 결과를 호출한 쪽에서 굳이 사용하지 않아도 되는 경우라면 변수를 선언하지 않아도 문제가 되지는 않습니다.

가령, 어떤 식당에서 이벤트를 한다고 해보겠습니다. 이벤트 내용은 손님이 식사를 하고 나서 영수증에 연락처를 기입해서 응모함에 넣으면 추첨을 통해 식사권을 주는 것인데요. 이벤트에 참여를 원한다면 영수증이 필요하므로 계산을 한 뒤에 영수증을 반환받아야 합니다. 그래야 연락처를 기입하고 응모함에 넣을 수 있게 되는거죠.
하지만 잠깐 대한민국에 여행을 온 외국인 관광객 손님이라면 아마 식사권은 필요가 없을 겁니다. 추첨을 하기도 전에 귀국할 수도 있을테니까요. 이 경우라면 식당 사장님이 "영수증 드릴까요?" 라고 물어보더라도 필요가 없으므로 "버려주세요" 라고 할 수도 있을 겁니다.
즉, 반환값이 있는 메소드임에도 불구하고 반환값을 사용하지 않아도 되는 경우라면 굳이 새로운 변수로 그 값을 받을 이유가 없는거죠. 하지만 식당을 자주 방문하는 손님이라면 반드시 새로운 변수로 그 값(영수증)을 받아서 사용할 것입니다.

궁금증 해결에 도움되었으면 좋겠습니다 😊
감사합니다.

ruddhrhdwn님의 프로필 이미지
ruddhrhdwn

작성한 질문수

질문하기