728x90
용어정리
- 선언부 : 리턴타입, 메소드 이름, 매개 변수 선언
- void : 리턴값이 없는 메소드는 리턴 타입으로 void
- 매개 변수 : 메소드 호출 시 제공되는 매개값이 대입되어 메소드 블록 실행 시 이용됨
- 리턴문 : 메소드의 리턴값을 지정하거나 메소드 실행 종료를 위해 사용할 수 있음
- 호출 : 메소드를 실행하려면 ‘메소드 이름(매개값,…)’ 형태로 호출
- 오버로딩 : 클래스 내에 같은 이름의 메소드 여러 개 선언하는 것을 말함
메소드 선언부
- 리턴 타입 : 메소드가 리턴하는 결과의 타입 표시
- 메소드 이름 : 메소드의 기능이 드러나도록 식별자 규칙에 맞게 지음
- 매개 변수 선언 : 메소드 실행할 때 필요한 데이터를 받기 위한 변수 선언
- 메소드 실행 블록 : 실행할 코드 작성
형식
리턴타입 메소드이름 (매개변수선언){
메소드 실행 블록, 실행할 코드 작성
}
메소드 선언과 호출
리턴 타입
- 메소드를 싱행한 후의 결과값 타입
- 리턴값 없을 수도 있음
- 리턴값이 있는 경우 리턴 타입이 선언부에 명시
- 리턴값 존재 여부에 따라 메소드 호출 방법이 다르다.
- 리턴값이 void로 선언된 메소드에서 return은 메소드 실행 종료에 사용된다.
void poweron(){...} // 결과값이 없을 때
double divide(int x, int y){...} // 결과값이 있을 때
// 리턴값이 없을 때
poweron(); // 그냥 사용
// 리턴값이 있을 때
double result = divide(10,20); // 결과값을 받을 변수를 선언하고 받아야 한다.
메소드 이름
- 숫자로 시작하면 안되고 $ _ 를 제외한 특수문자 사용 불가
- 메소드 이름은 관례적으로 소문자로 작성
- 서로 다른 단어가 혼합된 이름의 경우 뒤이어 오는 단어의 첫 글자를 대문자로 작성
void run()
void startEngine()
매개 변수 선언
- 메소드 실행에 필요한 데이터를 외부에서 받아 저장할 목적
메소드 사용 예시
// 클래스 파일
package sec03.exam02;
public class Math {
double divide(int x,int y) {
return (double)x/y;
}
}
// 메인 파일
package sec03.exam02;
public class runstatementexample {
public static void main(String[] args) {
Math a = new Math();
double result = a.divide(5, 10);
System.out.println("result = " + result);
}
}
만약 인자 타입이 int인데 int보다 작은 byte 타입 등을 넣으면 자동으로 변환되서 진행되지만 int 초과 타입을 넣으면 컴파일 에러가 발생한다.
매개 변수의 개수를 모를 경우
매개 변수를 배열 타입으로 선언
// 메소드
타입 메소드명(배열타입 배열인자명)
int sum1(int[] value){..}
// 메인에서 사용
int[] value = {1,2,3};
int result = sum1(value); // 객체를 만들고 매개로
int result = sum1(new int[] {1,2,3,4,5}); // 바로 배열객체를 만들어 매개로
배열을 생성하지 않고 값의 목록만 넘겨주는 방식
타입 메소드명(인자타입 ... 배열인자명) // 점 3개
// 메소드
int sum2(int ... values){}
int result = sum2(1,2,3);
int[] values = {1,2,3,4,5};
int result = sum2(values);
int result = sum2(new int[] {1,2,3,4,5});
선언은 맨 처음 방법과 다르게 … 을 사용해서 해도 자바는 배열로 인식하기 때문에 배열을 매개값으로 제공해도 똑같이 동작한다. 즉, 첫 번재 방법은 반드시 배열 객체를 인자로 줘야하고, 두 번째 방법는 그냥 값을 주나, 배열을 주나 상관없다.
메소드 오버로딩
- 같은 이름의 메소드를 여러 개 선언
- 매개값을 다양하게 받아 처리할 수 있도록 하기 위해서 사용
- 매개 변수의 타입, 개수, 순서 중 하나가 달라야 함
- 매개 변수의 이름은 오버로딩과 상관없음을 주의
- 리턴타입은 같으나 다르나 상관 없고, 메소드의 이름은 동일해야 함
class 클래스명{
리턴타입 메소드이름 (타입변수,....){
// 실행문
}
리턴타입 메소드이름 (타입변수,....){
// 실행문
}
}
// 예시
// 클래스 파일
class plus{
int plus(int x,int y){
int result = x+y;
return result;
}
double plus(double x,double,y){
double result = x+y;
return result;
}
}
// 메인파일
plus(10,20); // 첫 번째 메소드 실행
plus(10.1,20.1); // 두 번째 메소드 실행
plus(10,20.1); // double이 int보다 크므로 자동변환되어 두 번재 메소드 실행
728x90
'👨🏫Study > JAVA' 카테고리의 다른 글
[JAVA] 06 - 6 패키지와 접근 제한자 (0) | 2021.08.06 |
---|---|
[JAVA] 06 - 5 인스턴스 멤버와 정적 멤버 (0) | 2021.08.06 |
[JAVA] 06 - 1 객체 지향 프로그래밍, 06 - 2 필드, 06 - 3 생성자 (0) | 2021.08.05 |
[JAVA] 05 참조 타입 (0) | 2021.08.04 |
[JAVA] 04 조건문과 반복문 (0) | 2021.08.03 |
댓글