작성
·
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의 메서드 호출 및 실행 과정을 잘 반영하고 있습니다.