java/객체지향

[객체지향] return문과 반환값

2021. 7. 9. 11:33
목차
  1. ●return문
  2. ●반환값

●return문

 

 return문은 현재 실행중인 메서드를 종료하고 호출 한 메서드로 되돌아 간다. 또한 반환값의 유무에 상관없이 모든 메서드에는 하나의 return문을 갖는다. 그런데 반환타입이 'void'인 경우 return문이 없어도 아무런 컴파일 오류가 없었다. 그 이유는 void가 반환타입으로 사용될 경우 컴파일러가 자동으로 메서드의 마지막에 'return;'을 추가해주었기 때문이다.

 

void printGugudan(int dan) {
     for(int i=1li <= 9; i++) {
          System.out.printf(%d * %d = %d%n", dan, i, dan * i);
     }
     
     // return;    // 반환타입이 void이므로 생략가능, 컴파일러가 자동추가
}

 

 하지만 반환타입이 void가 아닐 경우 무조건 return을 가져야 한다. 만약 return문이 없으면 컴파일 (error: missing return statement)가 발생한다.

 

int multiply(int x, int y) {
    int result = x * y;
    
    return result;   //반환타입이 void가 아니므로 생략불가
}

 

또한 return문을 조건식의 결과가 참이 때만 실행된다.

 

int max(int a, int b) {
     if(a > b)
        return a;
}

  max의 매개변수 a,b가 있을 때 a가 b보다 크다면 if의 조건식은 참이지만, 그 반대라면 거짓이 된다. 그런데 a가 b보다 크다는 보장이 없다. a가 b보다 크면 참인 결과가 반환되지만 a가 b보다 작으면 거짓인 결과가 반환된다. 결과값이 변수에 따라 달라지기 때문에 위와 같은 코드를 실행하면 컴파일 오류가 발생한다. 

 

int max(int a, int b) {
     if(a > b)
        return a;
     else 
        return b;
}

  그래서 조건문이 실행되기 위해선 다음과 같이 if문의 else블럭에 return문을 추가해서, 항상 결과값이 반환되도록 해야한다.

 

●반환값

int add(int x, int y) {
    int result = x + y;
    return result;
}

↓

int add(int x, int y) {
    return x + y;
}

 

 return문의 반환값으로 주로 변수(result)가 오긴 하지만 항상 그런건 아니다. 아래 코드와 같이 수식을 통해 반환값을 적용할 수 있다. 이 수식을 계산한 결과가 반환값이 된다. 

 

int diff(int x, int y) {
    int result = abs(x-y);
    
    return result;
}

↓

int diff(int x, int y) {
    return abs(x-y);
}

 메서드 abs의 반환타입이 메서드 diff의 반환타입과 일치하기 때문에 아래와 같이 표현할 수 있다. 이와 같이 반환값으로 메서드가 오는 것도 가능하다.

 

int abs(int x) {
    if(x>=0) {
       return x;
    } else {
       return -x;
    }
}

↓

int abs(int x) {
    return x>=0 ? x : -x;
}

 

 간단한 메서드의 경우 위의 코드와 같이 if문 대신 조건연산자를 사용하는 것도 가능하다.

 

출처: 자바의 정석(저자: 남궁성, 출판사:도우출판

'java > 객체지향' 카테고리의 다른 글

[객체지향] 메서드 간의 호출과 참조  (0) 2021.07.09
[객체지향] static 메서드와 인스턴스 메서드  (0) 2021.07.09
[객체지향] 메서드  (0) 2021.07.08
[객체지향] 변수  (0) 2021.07.06
[객체지향] 객체  (0) 2021.07.05
  1. ●return문
  2. ●반환값
'java/객체지향' 카테고리의 다른 글
  • [객체지향] 메서드 간의 호출과 참조
  • [객체지향] static 메서드와 인스턴스 메서드
  • [객체지향] 메서드
  • [객체지향] 변수
각시탈코더
각시탈코더
각시탈코더
각시탈코더
각시탈코더
전체
오늘
어제
  • 분류 전체보기 (203)
    • java (46)
      • 객체지향 (20)
      • 기본문법 (8)
      • 자바의 정석 연습문제 오답노트 (9)
      • 백준 알고리즘 (9)
    • Spring (17)
      • SpringMVC (8)
      • Spring DI와 AOP (5)
      • REST API와 Ajax (1)
      • Spring 프로젝트 (1)
      • Spring Security (0)
    • DB (47)
      • Oracle (15)
      • SQL오답노트 (25)
      • 튜닝 (0)
      • ERD (1)
      • DB 모델링 (5)
    • Servlet & JSP (3)
    • JDBC (2)
      • 기본 (1)
      • 스프링JDBC (1)
    • MyBatis (2)
    • JavaScript (2)
      • 코딩애플 (0)
      • 문법 (1)
    • React (0)
      • 코딩애플 (0)
    • HTML (0)
      • 모던 웹을 위한 HTML5+CSS3 바이블 (0)
    • CSS (0)
      • 모던 웹을 위한 HTML5+CSS3 바이블 (0)
    • Linux (0)
    • Git & GitHub (2)
      • Git (1)
    • CS (19)
      • 네트워크 (6)
      • HTTP (7)
      • 컴퓨터구조 (0)
      • 자료구조와 알고리즘 (2)
      • 기타 (4)
    • 개발설정 (2)
    • 기술면접 (0)
      • JAVA (0)
      • Spring (0)
      • DB (0)
      • 네트워크 (0)
      • 공통 (0)
    • 프로젝트 (2)
      • 게시판만들기 (2)
    • 기혁씨의 삽질표류기 (28)
    • 참고자료 (2)
      • 국비수업 (0)
      • 당당 프로젝트 (1)
    • 뉴렉처 (17)
      • 자바 (11)
      • 자바스크립트 (3)
      • 키워드 (0)
      • 숙제 (0)
      • CSS (0)
      • DB (3)
      • 서블릿 (0)
      • 스프링 (0)
      • DOM (0)
    • 내가 만든 학습그림 (3)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 웹프로그래밍
  • 코딩
  • spring
  • 연습문제
  • 백준
  • 객체지향
  • 네트워크
  • db
  • 서브쿼리
  • 알고리즘
  • 국비수업
  • 오류
  • 모두의네트워크
  • 쿼리
  • 공부
  • 배열
  • 자바
  • 자바의정석
  • 오라클
  • 자바의정석기초편
  • 개발자
  • Oracle
  • 에러
  • It
  • 뉴렉처
  • 프로그래머스
  • Java
  • SQL
  • 스프링
  • 백엔드

최근 댓글

최근 글

hELLO · Designed By 정상우.
각시탈코더
[객체지향] return문과 반환값
상단으로

티스토리툴바

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.