일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 인터페이스
- throws
- 새벽공부
- 다형성
- 상속
- 자바
- 변수
- 파이팅
- try-catch
- 코딩
- exception
- ArrayList
- 개발자
- 예외 처리
- 백엔드
- 코린이
- 졸리다
- 문자 단위 스트림
- node.js
- 초보개발자
- 보조 스트림
- 배열
- 자료형
- Java
- FileInputStream
- 바이트 단위 스트림
- MPA
- 메서드
- SSR
- 인스턴스
- Today
- Total
SHUSTORY
05-3 메서드 본문
함수
함수란 '하나의 기능을 수행하는 일련의 코드'를 말한다.
함수는 어떤 기능을 수행하도록 미리 구현해 놓고 필요할 때마다 호출하여 사용할 수 있다.
함수의 입력과 반환
함수는 이름이 있고 입력 값과 결과 값을 갖는다.
함수의 입력으로 받는 변수를 '매개 변수' 라고 한다.
매개 변수가 함수에서 처리된 후 결과로 돌려주는 값을 '반환 값'이라고 한다.
함수 정의하기
위의 add 함수 예제를 통해 함수 정의에 대해 정리하겠다.
함수 이름 add의 위치는 함수 이름을 적는 부분으로, 함수의 기능과 관련된 이름으로 정의하도록 한다.
매개변수 num1과 num2는 int 자료형으로 정의되어 있는데,
함수를 호출할 때 괄호 안의 매개변수의 자료형에 맞게 함수에 전달된다.
위의 getTenTotal 함수와 같이 매개변수가 필요 없는 함수도 있다.
위의 함수는 1부터 10까지의 값을 더한 값을 반환하기 때문에, 함수에 전달할 값이 굳이 필요하지 않아
매개변수가 필요하지 않다.
return 예약어와 반환형
위의 add 함수를 수행한 후 결과 값은 변수 result에 저장된다.
result에 저장된 결과 값은 함수를 호출했을 때 반환되는 값이므로 '반환 값'으로도 불린다.
return 예약어는 '이 함수의 결과 값을 반환한다'는 의미를 갖는다.
즉 return 예약어를 사용하여 result 값을 반환하는 것이다.
add함수에서 변수 result의 반환형은 정수이기 때문에 int add(...){...} 형태로 쓰인다.
위와 같이 반환 값이 없는 함수도 존재한다.
반환 값이 없다고 해서 반환형을 비워 두면 오류가 발생하므로 반환형을 작성하는 자리에 void를 작성한다.
void는 비어 있다는 의미로 '반환할 값이 없다'는 의미의 예약어이다.
* return 예약어는 함수 수행을 끝내고 프로그램 흐름 중에서 호출한 곳으로 다시 되돌아갈 때도 사용할 수 있다.
함수 수행을 종료하는 목적이므로 return 뒤에 반환값을 적지 않아도 된다.
함수 호출하고 값 반환하기
add 함수는 두 개의 매개변수에 int형 값을 전달받아 두 수의 합을 돌려준다.
결과 값이 정수이기 때문에 반환형은 int가 된다.
반환 값이 int이기 때문에 결과 값이 저장되는 sum 변수의 자료형도 int가 된다.
* 함수를 호출할 때 사용되는 변수 이름과 호출되는 함수에서 사용하는 변수는 서로 다른 변수이므로
함수를 호출할 때 넘겨주는 변수 이름과 함수를 구현할 때 사용하는 매개변수 이름이 같을 필요는 없다. ( 같아도 상관x )
함수 호출과 스택 메모리
함수를 호출하면 그 함수만을 위한 메모리 공간이 할당되는데, 이를 스택이라고 한다.
스택은 LIFO( Last In First Out ) 구조이다.
함수가 호출되면 그 함수가 사용할 메모리 공간a가 스택에 생성된다.
main 함수에서 해당 함수를 호출하면,
호출된 함수가 사용할 메모리 공간b가 스택에 생성된다. (구분하기 쉽게 메모리 공간a, 메모리 공간b라고 부르겠음)
해당 함수의 수행이 끝나면 메모리 공간 b는 자동으로 사라진다.
즉 A( ) -> B( ) -> C( ) 함수의 순서로 호출했다면 C( ) -> B( ) -> A( ) 순서로 반환되고 스택 메모리도 이 순서대로 소멸된다.
* 참고로 함수 내부에서만 사용하는 변수를 지역 변수라고 한다. 지역 변수는 스택 메모리에 생성된다.
함수의 장점
함수를 사용하면 기능을 나누어 가독성이 좋은 코드를 효율적으로 구현할 수 있다.
기능별로 함수를 구현해 놓으면 같은 기능을 매번 코드로 만들지 않고 그 기능의 함수를 호출하면 되기 때문에 편리하며, 중복을 방지할 수 있다.
프로그램 실행 시 발생하는 오류를 수정하는 디버깅 작업을 할 때도 편리하다.
클래스 기능을 구현하는 메서드
자바 프로그램에는 클래스 내부에서 사용하는 멤버 함수인 '메서드'가 있다.
메서드는 멤버 변수를 사용하여 클래스의 기능을 구현한다.
예제02에서 메서드의 반환 값은 studentName인데 자료형이 String이므로 반환형도 String이다.
위 메서드는 값을 지정하는 set기능을 제공한다.
이름을 전달받아 지정하는 것이기 때문에 매개변수 name이 필요하다.
매개변수 name을 studentName에 대입하면 학생 이름이 지정된다.
반환 값이 없기 때문에 반환형은 void로 지정한다.
자바의 이름 짓기 규약
규약이 따로 있는 것은 아니지만 암묵적인 룰은 존재한다.
클래스 이름은 대문자로 시작한다.
public 클래스는 단 하나이고 public 클래스의 이름과 자바 파일 이름은 같아야 한다.
패키지 이름은 모두 소문자로 만든다.
변수와 메서드 이름은 소문자로 시작하며, 중간에 새로운 단어로 바뀔 때마다 대문자를 사용한다.
위와 같이 이름을 짓는 과정을 통해 가독성을 좋게 할 수 있다.
'프로그래밍 > JAVA' 카테고리의 다른 글
05-5 생성자 (1) | 2023.02.20 |
---|---|
05-4 클래스와 인스턴스 (0) | 2023.02.20 |
05-2 클래스 살펴보기 (0) | 2023.02.20 |
05-1 객체 지향 프로그래밍과 클래스 (0) | 2023.02.20 |
04-2 반복문 (0) | 2023.02.20 |