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

채 수님의 프로필 이미지
채 수

작성한 질문수

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

메소드

void의 사용에 대해

작성

·

440

0

 메소드 강의에서 3분 24초 쯤 void를 이용하는데 왜 갑자기 void를 쓰는지에 대한 설명이 없어서 헷갈려서 질문드립니다. 어떨 때 void를 쓰는지 ( 제가 알기론 반환 값이 없을 때 사용 ) 그리고 위의 부분들과 어떠한 점이 달라서 void를 쓰게 되었는지를 잘 모르겠습니다... 객체 듣다가 너무 어려워서 객체 파트만 2번째 듣는데 너무 어렵네요 ㅠㅠ

답변 2

2

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

안녕하세요?
처음으로 main() 영역이 아닌 다른 새로운 영역(메소드)을 만드는 과정에서 최대한 main() 과 비슷하게 만들고자 아주 기본적인 메소드, 아무런 전달값과 반환값이 없는 형태로 만들다 보니 void 로 시작하게 되었습니다. void 는 '비어 있는' 이라는 의미이며 자바에서는 알고 계신 것처럼 반환 값이 없을 때 사용되지요.
메소드는 보통 다음과 같은 형태로 만들게 됩니다.

반환값 메소드명(전달값1, 전달값2, ...) {
    ... 
}

만약 반환하는 값이 있다면 다음과 같이 return 이 붙게 되구요

반환값 메소드명(전달값1, 전달값2, ...) {
    ... 
    return 실제반환값
}

이때, 사실 메소드명 왼쪽에는 '반환값' 보다는 '반환할 값의 자료형' 이 더 정확한 표현입니다.

반환할_값의_자료형 메소드명(전달값1, 전달값2, ...) {
    ... 
    return 실제반환값
}

그리고 이 자료형에 해당하는 값을 return 을 통해 반환해주면 됩니다. 자료형이 int 이면 정수를, String 이면 문자열을, 그 외의 자료형이면 또 그에 맞는 값을 말이죠.

그런데 모든 메소드가 항상 무언가를 반환해야 하는 것은 아닙니다. 메소드를 호출하는 쪽에서 반환값을 받아서 사용을 한다면 반환값이 필수지만, 그냥 메소드 자체의 동작만 하고 끝나는 경우도 있거든요. 이때 '반환할 값의 자료형' 위치에 void 를 넣어주면 됩니다.

void 메소드명(전달값1, 전달값2, ...) {
    ... 
    // 값을 반환하지 않음
}

그러면 이 메소드는 전달값이 있는 경우 전달값을 받아서 어떤 동작을 수행하고, 전달값이 없는 경우 전달값 없이 어떤 동작을 수행하고 그냥 끝이 나게 됩니다. 아무런 값도 반환하지 않고 말이죠 😊

정리하면, 메소드명 앞에 어떤 자료형 또는 객체가 있다면 그러한 형태의 값을 반환하는 메소드인 것이고, 아무것도 반환하지 않는 메소드인 경우 메소드명 앞에 void 가 붙는다고 이해하시면 되겠습니다.
감사합니다.

0

채 수님의 프로필 이미지
채 수
질문자

반환형이 없고 전달해야할 값도 없기 때문ㅇ니가요?

채 수님의 프로필 이미지
채 수

작성한 질문수

질문하기