메서드(Method)
Variable arguments
- 메서드 선언 시 동일 타입의 인자가 몇 개 들어올지 예상할 수 없을 경우(또는 가변적)
- 배열 타입을 선언할 수 있으나 → 메서드 호출 전 배열을 생성, 초기화 해야 하는 번거로움
- …을 이용하여 파라미터를 선언하면 호출 시 넘겨준 값의 개수에 따라 자동으로 배열 생성 및 초기화
public void addAll(int ... params) {
int sum = 0;
for(int i : params) {
sum += i;
}
System.out.println(sum);
}
메서드 호출
- 메서드를 호출할 때는 메서드의 선언부에 맞춰 호출해야 함
- 메서드 이름 : 반드시 동일
- 파라미터 : 선언된 파라미터의 개수는 반드시 동일, 타입은 promotion 적용 가능
- 메서드 접근
- 멤버 변수와 마찬가지로 static 또는 non static 상태를 구분해서 호출
- 기본형 변수와 참조형 변수
- 메서드 호출 시 파라미터로 입력된 값을 복사해서 전달
- Java는 Call by Value!!
public class CallByTest {
int memberVar = 10;
static void change1(int var) {
var += 10;
System.out.printf("change1 : %d%n", var);
}
static void change2(CallByTest cbtl) {
cbtl.memberVar += 100;
System.out.printf("change2 : %d%n", cbtl.memberVar);
}
public static void main(String[] args) {
CallByTest cbt = new CallByTest();
cbt.memberVar = 5;
System.out.printf("change1 호출 전 memberVar : %d%n", cbt.memberVar);
change1(cbt.memberVar);
System.out.printf("change1 호출 후 memberVar : %d%n", cbt.memberVar);
change2(cbt);
System.out.printf("change2 호출 후 memberVar : %d%n", cbt.memberVar);
}
}
//실행결과
//change1 호출 전 memberVar : 5
//change1 : 15
//change1 호출 후 memberVar : 5
//change2 : 105
//change2 호출 후 memberVar : 105
메서드 오버로딩
- 조건
- 메서드 이름은 동일 해야 함
- 파라미터의 개수 또는 데이터 타입이 달라야 함
- 파라미터가 같으면 중복 선언 오류(순서만 다른것은 파라미터가 같은것!)
💡 매개변수 이름, 리턴 타입은 의미 없음 (아래 예제 모두 메서드 오버로딩이 아니다!)
// 매개변수의 타입은 같지만 이름만 다른 경우
int isOverLoading(int a, int b) { return a + b;}
int isOverLoading(int x, int y) { return x + y;}
// 리턴 타입만 다른 경우
int isOverLoading(int x, int y) { return x + y;}
long isOverLoading(int x, int y) { return x + y;}
// 매개변수의 타입이 같은데 순서만 다른 경우
long isOverLoading(long x, int y) { return x + y;}
long isOverLoading(int x, long y) { return x + y;}
자바 데이터 기본값
멤버 변수(인스턴스 멤버변수 & 클래스 멤버 변수)는 선언시에 타입별로 default 초기화 값을 가진다
- 정수형 : 0
- 실수형 : 0.0
- 논리형 : false
- 단일문자 : ‘\u0000’ 공백문자
- 참조형(객체형) : null (String 문자열 위한 객체형)
'Java' 카테고리의 다른 글
[JAVA] 객체지향 언어의 특징 & 캡슐화 & 상속 (0) | 2024.02.12 |
---|---|
[JAVA] 생성자, this, super (0) | 2024.01.24 |
[JAVA] 변수(Variable)와 자바 주석문 (4) | 2024.01.21 |
[JAVA] 객체지향 프로그래밍(Object Oriented Programming) (1) | 2024.01.19 |
[JAVA] 배열, 다차원 배열 (0) | 2024.01.18 |