Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
Tags
- 자바의 정석 기초편 ch4
- 자바의 정석 기초편 ch13
- 자바의 정석 기초편 ch11
- 스프링 mvc2 - 검증
- 스프링 db2 - 데이터 접근 기술
- 코드로 시작하는 자바 첫걸음
- jpa - 객체지향 쿼리 언어
- 스프링 고급 - 스프링 aop
- @Aspect
- 게시글 목록 api
- 2024 정보처리기사 시나공 필기
- 스프링 mvc1 - 서블릿
- 자바의 정석 기초편 ch1
- 스프링 입문(무료)
- 자바의 정석 기초편 ch14
- jpa 활용2 - api 개발 고급
- 타임리프 - 기본기능
- 자바의 정석 기초편 ch5
- 스프링 mvc2 - 로그인 처리
- 자바의 정석 기초편 ch6
- 자바의 정석 기초편 ch12
- 자바의 정석 기초편 ch7
- 2024 정보처리기사 수제비 실기
- 스프링 mvc1 - 스프링 mvc
- 자바의 정석 기초편 ch9
- 자바의 정석 기초편 ch2
- 스프링 mvc2 - 타임리프
- 스프링 db1 - 스프링과 문제 해결
- 자바의 정석 기초편 ch8
- 자바의 정석 기초편 ch3
Archives
- Today
- Total
나구리의 개발공부기록
자바의 정석 기초편 ch6 - 20 ~ 22[return문, 반환값,호출스택] 본문
1) return문
- 실행 중인 메서드를 종료하고 호출한 곳으로 되돌아감
- 반환타입이 void가 아닐 경우 메서드 마지막에 return문을 반드시 작성
- 반환타입이 void일 경우 컴파일러가 자동으로 추가하므로 생략이 가능하지만 반환타입이 void라는것은 어차피 반환할 값이 없도록 메서드를 정의했다는 뜻임
- 메서드에 조건문이 있다면 참,거짓일때 모두 return문을 작성해야하며 둘 중 하나만 return문을 작성할 경우 에러 발생
// 리턴 예시
void printGugudan(int dan) {
if (!(2 <= dan && dan <= 9))
return; // dan의 값이 2~9가 아닌경우, 호출한 곳으로 리턴
// 리턴문 생략
for(int i=1; i<=9; i++) {
System.out.printf("%d * %d = %d%n", dan, i, dan * i);
// 반환 타입이 void이므로 return문 생략가능
}
}
// 리턴 생략 불가(반환타입 void 아님)
int multiply(int x, int y) {
int result = x * y;
return result; // 반환 타입이 void가 아니므로 생략불가
}
// 리턴문 에러 상황
int max(int a, int b) {
if (a > b)
return a; // 조건식이 참일 경우만 실행 되어 에러발생
}
// 리턴문 에러 수정
int max(int a, int b) {
if (a > b)
return a; // 조건식이 참일 때, 거짓일 때 모두 return문을 작성해야함
}else {
return b;
}
(1) 반환값
- 반환값의 타입, 반환타입, 결과를 담을 변수의 타입이 모두 일치해야함
- 자동형변환 기능 적용 가능
int result = mm.add(3, 5); // 결과를 담을 변수의 타입
int add(int x, int y) { // 메서드의 반환타입
int result = x + y;
return result; // 반환값의 타입
}
2) 호출 스택(call stack)
- 스택: 밑이 막힌 상자처럼 하나씩 차곡차곡 쌓이는 자료구조
- 메서드 수행에 필요한 메모리가 제공되는 공간
(1) 메서드가 호출되어 동작하는 방식
- 메서드가 호출 -> 호출스택에 메모리 할당 -> 종료되면 해제
- 아래 있는 메서드(먼저 호출된 메서드)가 위의 메서드(매서드 내부에서 호출된 메서드)를 호출
- 맨 위의 메서드(제일 마지막에 호출된 메서드) 하나만 실행되고 나머지는 대기
- 멀티 스레드일 경우 스택이 여러개 생기므로 여러 메서드를 동시에 실행할 수 있음 (스레드 1당 스택 1)
** 출처 : 남궁성의 정석코딩_자바의정석
'유튜브 공부 > JAVA의 정석 기초편(유튜브)' 카테고리의 다른 글
자바의 정석 기초편 ch6 - 26 ~ 31[static메서드와 인스턴스 메서드, 오버로딩] (0) | 2023.11.17 |
---|---|
자바의 정석 기초편 ch6 - 23 ~ 25[기본형매개변수, 참조형매개변수, 참조형 반환타입] (0) | 2023.11.16 |
자바의 정석 기초편 ch6 - 14 ~ 19[메서드란? 메서드의 선언부와 구현부, 메서드호출,메서드의 실행 흐름] (0) | 2023.11.15 |
자바의 정석 기초편 ch6 - 9 ~ 13[클래스의 정의,선언위치변수종류,클래스변수,인스턴스변수] (0) | 2023.11.15 |
자바의 정석 기초편 ch6 - 5 ~ 8[한파일에 여러 클래스 작성하기,객체의 생성과 사용, 객체의 배열] (1) | 2023.11.14 |