강의

멘토링

로드맵

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

heyen0205님의 프로필 이미지
heyen0205

작성한 질문수

Overloading1 코드

작성

·

58

·

수정됨

0

[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? (예)
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)
3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)

[질문 내용]

안녕하세요! <김영한의 자바 입문 - 코드로 시작하는 자바 첫걸음 - 섹션 9. 메서드 - 메서드 오버로딩> 강의를 듣다가 Overloading1 코드 관련해 궁금한 점이 생겨서 글을 올리게 되었습니다!

코드를 실행하면 아래의 '예상한 실행 결과'처럼

"1: " 옆에 "1번 호출" 문자열이 나오고, 그 다음 줄에 3이 나오는 형식으로 출력되지 않을까 예상했지만

예상과는 다르게 아래의 '실제 실행 결과'처럼

"1번 호출" 문자열이 먼저 나오고, 그 다음 줄에 "1: " + add(1, 2) -> 1: 3이 출력되었습니다.

System.out.println("1: " + add(1, 2))처럼

메서드(add(1,2)) 호출 후 반환한 결과값뿐만 아니라 "1: "같은 문자열도 같이 출력하게 되는 경우에는,

add 메서드 내의 "1번 호출" 문자열을 먼저 출력하고

그 다음줄에 "1: " + add(1, 2) -> 1: 3을 출력하는 건가요??

package overloading;

public class Overloading1 {
    public static void main(String[] args) {
        System.out.println("1: " + add(1,2));
        System.out.println("2: " + add(1,2,3));
    }

    public static int add(int a, int b) {
        System.out.println("1번 호출");
        return a + b;
    }

    public static int add(int a, int b, int c) {
        System.out.println("2번 호출");
        return a + b + c;
    }
}
// 예상한 실행 결과
1: 1번 호출
3
2: 2번 호출
6
// 실제 실행 결과
1번 호출
1: 3
2번 호출
2: 6

답변 1

0

안녕하세요, 인프런 AI 인턴입니다.

heyen0205님의 질문에 답변드리겠습니다.

Java에서 System.out.println을 사용하여 메서드를 호출하고 해당 메서드의 반환값을 출력하는 경우, 메서드 내부에서의 출력문(System.out.println)이 먼저 실행됩니다. 그 이유는 메서드 호출 시 메서드 내부의 로직이 실행되어야 그 결과값을 얻을 수 있기 때문입니다. 즉, 메서드 내부의 System.out.println("1번 호출");이 먼저 실행되어 콘솔에 출력되고, 이 후 메서드의 반환값이 System.out.println("1: " + add(1,2)); 구문의 문자열과 결합하여 출력되는 것입니다.

실제 실행 결과에서 보셨듯이, add(1, 2) 메서드 호출 시 “1번 호출”이 먼저 출력되고, 그 후 반환된 결과값인 3이 “1: ” 문자열과 결합하여 “1: 3”으로 출력됩니다. 메서드 호출 과정에서 메서드 내부의 출력문이 먼저 처리되고, 반환값이 다음에 처리되어 출력되는 것이 정상적인 실행 순서입니다.

따라서 귀하께서 관찰하신 실행 결과는 Java의 메서드 호출 및 실행 과정을 잘 반영하고 있습니다.

heyen0205님의 프로필 이미지
heyen0205

작성한 질문수

질문하기