몬그로이

void와 return && for문, sout 와 return값 본문

Dev 언어 정리 & Self QnA/Java

void와 return && for문, sout 와 return값

Mon Groy 2024. 4. 26. 09:00

메서드를 정의할 때 리턴값이 없다면 void를 사용한다

 

메서드 옆 중괄호 안에 수행 내용으로

sout키워드 또는 for문이 적혀져 있는 경우가 있다

//예를들면
void horn () {
	System.out.println("빵빵");
}
//이 형식은 이 메서드가 호출됐을 때 빵빵을 작동하는 기능을 넣고 싶은 경우이다

 

 

void는 리턴값이 없으면 적으라고 하는데

for문이나 sout나 중괄호 안에 있기 때문에

뭔가를 수행하는 거니까 결과가 존재하는 거 아닌가?

라는 반발적인 생각이 든다

 

void method() {for문} 형태일 때
for문이 수행할 것을 적는 자리에 적혀있는데도 불구하고 void를 사용하는 이유는?

 

void는 '반환 타입'의 하나로 '반환하는 값이 존재하지 않는다'는 의미를 갖는다

즉, 반환값의 존재 여부를 말하는 것이지

메서드의 수행부분에 무언가가 존재한다는 의미가 아니라는 것이다

더구나 반환은 return이라는 키워드가 전적으로 맡아서 하기때문에

return이 있으면 return값의 타입 즉 반환타입이 필요하며

더보기

그 때 사용하는것이 int, str, float 등이다

따라서 void가 있으면 int류 가 없고, void가 없으면 int류가 자리를 차지한다

return은 메서드 내부에서 사용하는 키워드이다

 

for문의 결과와 sout의 출력값은 return값으로 쳐주지 않는 이유?

 

for문과 같은 반복문은 단순히 반복되는 작업을 수행할 뿐이지 반환값이 도출되는 것이 아니다

즉, 메서드의 일부인 제어문일 뿐이지

클래스도 아니고 메서드도, 연산자도 아니라 그저 돌고 있을 뿐이다

 

sout는 메서드의 계산을 통해서 나온 결과값이 아니라

혹여 계산결과 아래에 적혀 있다고 하더라도 결과값을 출력할 뿐이지

결과값을 만들어 내는 존재가 아닌 것이다

 

결국 반환되는 값을 구하는 과정 자체가 없기 때문에 return값이 존재하지 않는 것이되므로

void가 리턴타입으로 붙는 것이다

 

추가적으로

 

메서드를 정의하고 {} 내부에 return을 표기하지 않아도

코드가 읽히고 계산되는 데에는 문제가 없다

하지만 가독성을 위해서 return을 명시하는 습관을 들이도록 하자