메서드
함수 Vs. 메서드
- 큰 차이는 없음
- 객체지향 언어에서 클래스 내에서 선언되는 함수를 메서드라고 따로 구분하여 표현
- 자바를 제외한 언어들은 클래스를 반드시 사용하지 않아도 되는 언어 존재(Python, C++ 등등)
- 자바는 반드시 클래스 필요 >> 모두 메서드라고 표현
알고있는 함수와 동일
- 엄밀한 수학적 정의 함수를 그대로 따르지는 X
- 수학적 정의의 개념을 그대로 차용해서 사용(함수)
- 수학에서의 함수는 집합 x와 y에 대한 관계
- f(x) = y (입력 x에 대한 출력 y)
- 프로그래밍 언어에서는 프로그램을 이루는 기본 단위
- 명령어들의 집합
- 코드의 재사용성
자바에서 메서드의 기본 형태
[반환 타입] [메서드 이름] (타입 변수명, 타입 변수명, ...){
// 메서드 블록
}
- 자바에서 main 메서드는 특별한 메서드
- 누군가에 의해서 자동으로 실행
- 자바에서의 몯느 코드는 main 메서드부터 실행 시작
- 나머지 메서드들은 직접 실행을 시켜줘야 한다
- 메서드 호출
메서드의 호출 구조
- 메서드는 언제 실행되는가?
- 메서드는 호출과 함꼐 실행
- 메서드의 실행은 메모리에 메서드를 위한 공간이 만들어 짐을 의미
- 메서드는 실행되는 동안 메서드 고유의 메모리 영역을 가짐
- 이것을
콜스택(호출스택)
이라 함
- 메서드는 언제 종료되는가?
- 메서드 블록 내에 더 이상 실행할 코드가 없으면 자동으로 종료
return
명령을 수행하면 메서드 종료- 메서드의 종료는 메모리의 삭제를 의미
- 메서드가 실행중에 사용했던 모든 메모리 반납
- 종료 이후 해당 메모리에는 값이 더 이상 남아있지 않음(참조 불가를 의미)
자바의 변수의 종류
- 클래스 변수
- 인스턴스(객체) 변수
- 지역변수(Local Variable)
- 메서드 내에서 선언(정의)된 변수
- 파라미터도 지역변수
- 지역변수는 메서드의 범위를 넘어설 수 없음
- 다른 메서드의 메모리를 참조하는 것도 불가능
- 해당 메서드 내에서만 유효(변수의 영영(Scope))
타입에 따른 입력값 전달
- 자바에서 변수의 종류는 두 가지
- 기본형 변수(boolean, byte, char, short, int, float, double)
- 참조형 변수(String, Array, ...)
- Call by Value
- Call by Reference
참조형 변수의 반환
- 참조형 타입의 변수를 반환할 때도 마찬가지로 주소가 반환됨
재귀호출
- recursive Call
- 자기 자신을 호출하는 메서드
- 재귀는 반복문을 이용하지 않는 반복의 또다른 형태
- 메서드는 실행될 때마다 메모리가 생성
'프로그래밍 언어 > Java 프로그래밍' 카테고리의 다른 글
Java Day8 - 클래스, 상속, 배열 실습 (0) | 2021.11.10 |
---|---|
Java Day7 - 객체지향 프로그래밍(클래스, 객체, ...) (1) | 2021.11.09 |
Java Day4 - 반복문 (0) | 2021.11.04 |
Java Day3 - 연산자, 배열, 조건문 (0) | 2021.11.03 |
Java Day2 - 문자, 타입 변환, 표준 입/출력, 파일 입/출력 (0) | 2021.11.02 |