일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- JVM
- 메서드
- 스파르타내일배움캠프TIL
- #스파르타내일배움캠프
- 생성자
- diary
- 변수의 다양성
- Diary 해우소
- TiL_1st_0419
- Git
- 클래스
- #스파르타내일배움캠프TIL
- 객체지향 언어
- static
- 회고록
- GitHub
- 성장기록
- 스파르타내일배움캠프
- Java
- 감사기록
- 스레드
- Github_token
- 포맷은 최후의 보루
- 인스턴스
- Token
- 내일배움캠프
- #내일배움캠프
- Java의 이점
- KPT
- 해우소
- Today
- Total
몬그로이
void와 return && for문, sout 와 return값 본문
메서드를 정의할 때 리턴값이 없다면 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을 명시하는 습관을 들이도록 하자
'Dev 언어 정리 & Self QnA > Java' 카테고리의 다른 글
Import 없이 사용 가능한 Class (0) | 2024.05.21 |
---|---|
프로세스의 자원을 스레드가 공유한다? (0) | 2024.05.03 |
왜 때문인지 혼란스러웠던 클래스 멤버와 인스턴스 멤버 설명해보기 (0) | 2024.04.25 |
이름이 동일한 method? (0) | 2024.04.25 |
한 클래스는 한가지 인터페이스만 구현할까? (0) | 2024.04.24 |