✅ 인스턴스 변수 ✅ 클래스 변수 ✅ 지역변수 ✅ 인스턴스 메서드 ✅ 클래스 메서드
변수 | 선언위치 | 생성시기 |
---|---|---|
클래스변수 | 클래스 영역 | 클래스가 메모리에 올라갈 때 |
인스턴스변수 | 클래스 영역 | 인스턴스가 생성되었을 때 |
지역변수 | 클래스 영역 이외의 영역 (메서드, 생성자, 초기화 블럭 내부) | 변수 선언문이 수행되었을 때 |
(instance variable)
인스턴스마다 고유한 상태를 유지해야하는 속성의 경우 사용
(class variable)
모든 인스턴스가 공통된 저장공간(변수)을 공유하므로, 한 클래스의 모든 인스턴스가 공통된 값을 유지해야 하는 경우 사용
(local variable)
메서드 내에 선언되어 매서드 내에서만 사용 가능
특정 작업을 수행하는 일련의 문장들을 하나로 묶은 것
int add(int x, int y){
int result = x + y;
return result;
}
int result = add(1,2);
- 기본형 매개변수(primitive type) : 기본형 값이 복사
- 변수의 값을 읽기만 할 수 있다.
- 참조형 매개변수(reference type) : 인스턴스의 주소 복사
- 변수의 값을 읽고 변경할 수 있다.
인스턴스 변수나 인스턴스 메서드와 관련된 작업을 하는 메서드
인스턴스 변수나 인스턴스 메서드와 관련없는 작업을 하는 메서드
메서드 생성
class MyMath2{
long a,b;
// 인스턴스 메서드
long add(){
return a+b; // 인스턴스 변수 사용
}
// 클래스 메서드 (static 메서드)
static long add(long a, long b){
return a+b; // 인스턴스 변수 사용하지 않음 (지역 변수)
}
}
메서드 호출
class MyMathTest2{
public static void main(String args[]){
// 클래스 메서드 호출 (객체 생성 없이 호출 가능)
System.out.println(MyMath2.add(200L,100L));
MyMath2 mm = new MyMath2(); // 인스턴스 생성
mm.a = 200L;
mm.b = 100L;
// 인스턴스 메서드 호출 (인스턴스 생성 후 호출 가능)
System.out.println(mm.add());
}
}