이전 내용
[java] java - 클래스, this() 코드
이전 내용 [java] 예제 및 풀이 (Switch, 배열 + 반복문)이전 내용 [java] java 예제 및 풀이(scanner, 조건문, do-while)이전 내용 [java] parse+자료형: 문자열 변환이전 내용 [java] 이클립스 한글 깨짐이전 내
puppy-foot-it.tistory.com
메소드 시그니처(method signature)
: 메소드 선언부
메소드 선언은 선언부와 실행 블록으로 구성된다.
메소드 선언부를 메소드 시그니처라고 하며, 선언부와 실행 블록에는 다음 요소를 포함한다.
- 리턴 타입: 메소드가 리턴하는 결과의 타입 표시
- 메소드 이름: 메소드의 기능이 드러나도록 식별자 규칙에 맞게 이름을 지어줌
- 매개 변수 선언: 메소드를 실행할 때 필요한 데이터를 받기 위한 변수 선언
- 메소드 실행 블록: 실행할 코드 작성
◆ 리턴 타입: 리턴값의 타입
- 리턴값: 메소드를 실행한 후의 결과값 ▶ 메소드는 리턴값이 있을수도, 없을수도 있다. 만약 리턴값이 있을 경우 리턴 타입이 선언부에 명시되어야 한다.
◆ 메소드 이름: 자바 식별자 규칙에 맞게 작성
- 숫자로시작하면 안되고, $와 _를 제외한 특수문지 사용 금지
- 관례적으로 메소드 이름은 소문자로 작성.
- 서로 다른 단어가 혼합된 이름이라면 뒤이어 오는 단어의 첫 글자는 대문자로 작성.
◆ 매개 변수 선언
- 매개 변수: 메소드가 실행할 때 필요한 데이터를 외부로부터 받기 위해 사용.
- 메소드에서 매개 변수가 필요한 경우가 있고 필요 없는 경우가 있음.
return 값이 없는 메소드: void
리턴값이 없는 메소드는 리턴 타입으로 void 사용.
return문 사용 시에는 리턴값을 지정하는 것이 아니라 메소드 실행을 강제 종료 시키는 역할.
메소드 호출
메소드는 클래스 내·외부의 호출에 의해 실행
◆ 내부의 다른 메소드에서 호출: 단순한 메소드 이름으로 호출
메소드( 매개값, ...);
리턴값이 있는 메소드를 호출하고 리턴값을 받고 싶은 경우
타입 변수 = 메소드(매개값, ...);
변수 타입은 메소드 리턴 타입과 동일하거나, 자동 타입 변환이 될 수 있어야 한다는 점에 주의
◆ 클래스 외부에서 호출: 클래스로부터 객체를 생성한 뒤 참조 변수를 이용해서 메소드 호출
클래스 참조변수 = new 클래스(매개값, ...);
객체가 생성되었다면 참조 변수와 함께 도트(,) 연산자를 사용해서 메소드 호출.
※ 도트 연산자: 객체 접근 연산자로 객체가 가지고 있는 필드나 메소드에 접근할 때 사용.
참조변수.메소드(매개값, ...); // 리턴값이 없거나, 있어도 리턴값을 받지 않을 경우
타입 변수 = 참조변수.메소드(매개값, ...) // 리턴값이 있고, 리턴값을 받고 싶을 경우
메소드 선언 시 매개 변수의 개수 모를 때
: 가변 매개변수
아래와 같이 배열을 입력받아 배열의 모든 값을 저장하는 sum1 메소드가 있다.
public class Computer {
int sum1(int[] values) {
int sum = 0;
for (int i = 0; i < values.length; i++) {
sum += values[i];
}
return sum;
}
}
이 메소드는 int[] 배열을 매개변수로 받는다.
메소드를 호출할 때는 정수 배열을 생성하여 전달해야 한다. 그리고 메소드를 호출하기 전에 배열을 반드시 선언하고 초기화해야 한다.
그리고 이 메소드는 가변 인자(varargs)를 사용하여 정수형 인자를 여러 개 받을 수 있습니다. 매개변수 타입 뒤에 ...가 붙어있다.
메소드를 호출할 때는 배열을 만들 필요 없이, 정수의 나열로 호출할 수 있다.
int sum2(int... values) {
int sum = 0;
for (int i = 0; i < values.length; i++) {
sum += values[i];
}
return sum;
◆ 두 메소드의 차이
- sum1(int[] values):
- 배열을 매개변수로 받음
- 호출 시 배열을 만들어야 함
- 배열의 길이가 0인 경우에도 배열을 전달해야 함
- sum2(int... values):
- 가변 인자를 사용하여 여러 개의 정수를 받을 수 있음
- 호출 시 정수 목록으로 간편하게 사용할 수 있음
- 매개변수가 없을 경우도 허용됨
public class ComputerTests {
public static void main(String[] args) {
Computer myCom = new Computer();
int[] values1 = { 1, 2, 3 };
int result1 = myCom.sum1(values1);
int result11 = myCom.sum2(values1);
System.out.println("result1: " + result1);
System.out.println("result11: " + result11);
int result2 = myCom.sum1(new int[] { 5, 6, 7, 8, 9 });
int result21 = myCom.sum2(new int[] { 5, 6, 7, 8, 9 });
System.out.println("result2: " + result2);
System.out.println("result21: " + result21);
// int result3 = myCom.sum1(1, 2, 3, 4, 5, 6); // 배열로 줘야하기 때문에 에러 발생
int result31 = myCom.sum2(1, 2, 3, 4, 5, 6);
System.out.println("result3: " + "error");
System.out.println("result31: " + result31);
}
}
▶ sum1은 매개변수가 배열 형태로 입력돼야 하기 때문에 result3은 에러가 발생한다.
반면에, sum2는 가변 인자를 사용하기 때문에, 배열로 줘도 되고, 숫자를 나열해도 된다.

enhanced for문
(향상된)
앞서 만든 for 반복문을 아래와 같이 바꿀 수 있다.
◆ Enhanced for loop는 JDK 5에서 추가된 기능으로, 기존 for 루프보다 명확하게 코드를 읽을 수 있고, 간결하게 순회를 할 수 있도록 해준다.
public class Computer {
int sum1(int[] values) {
int sum = 0;
for (int value : values) {
sum += value;
}
return sum;
}
// 가변 매개변수 주의 사항: 가장 마지막에 와야 함
int sum2(int... values) {
int sum = 0;
for (int value : values) {
sum += value;
}
return sum;
}
}
다음 내용
[java] java 예제 (메소드 오버로딩)
이전 내용 [java] 메소드 선언 : 가변 인수 모를 때 (feat. enhanced for문)이전 내용 [java] java - 클래스, this() 코드이전 내용 [java] 예제 및 풀이 (Switch, 배열 + 반복문)이전 내용 [java] java 예제 및 풀이(s
puppy-foot-it.tistory.com
'프로그래밍 및 기타 > Java' 카테고리의 다른 글
[java] 정적 멤버와 Static, 싱글톤 (0) | 2025.04.04 |
---|---|
[java] java 예제 (메소드 오버로딩) (0) | 2025.04.04 |
[java] java - 클래스, this() 코드 (0) | 2025.04.03 |
[java] 예제 및 풀이 (Switch, 배열 + 반복문) (0) | 2025.04.02 |
[java] java 예제 및 풀이(scanner, 조건문, do-while) (0) | 2025.04.01 |