클래스
클래스
•
속성 + 기능
•
필드 + 지역
◦
◦
지역
▪
메서드 내부, 메서드가 호출부에 의해서 호출되는 시점에 메모리에 올라가고 메서드 실행이 끝나고 호출부로 돌아가는 시점에 메모리에서 내려간다.
▪
매개변수 : 호출부에서 전달하는 값(전달인자) 을 받기 위해 메서드의 선언부에 선언되는 변수
▪
지역변수 : 메서드 내부에서 선언된 변수, 초기화를 해야지만 사용할 수 있다.
제한자(modifier)
modifier | 설명 |
public | 다른 패키지 내의 클래스에서도 호출할 수 있다. |
protected | 같은 패키지 내의 클래스나, 상속관계인 클래스에서 호출할 수 있다. |
private | 같은 클래스 안에서만 호출이 가능하다. |
default | 같은 패키지 내의 클래스에서만 호출할 수 있다. (생략하면 접근제한자가 default 이다.) |
그 외 제한자 : static, final, abstract, void, synchronized
static
[클래스의] 의미를 지니는 제한자이다.
변수 앞에 static 을 붙이면 해당 변수는 JVM 의 jeap 영역에 올라가게 된다.
heap 영역에 올라간 데이터는 클래스로더가 클래스를 메모리에 올릴 때 올라가게 되며 프로그램이 종료될 때 까지 메모리에서 내려오지 않는다.
필드변수
인스턴스 변수 (non static 변수)
•
클래스가 인스턴스화 되는 시점에 초기화 되는 변수이며 같은 클래스 이더라도 인스턴스마다 값이 개별적이다.
•
필드변수 중에 일반적인 변수, 클래스를 인스턴스화 할 때 메모리에 올라가고, 인스턴스가 메모리에서 삭제될 때 함께 삭제된다.
•
인스턴스 변수의 사용법: [변수타입] [변수명] = ;
클래스 변수 (static 변수)
•
클래스가 메모리에 올라가는 시점에 초기화 되는 변수이며 클래스의 인스턴스들이 모두 공유하는 값을 저장한다.
•
필드변수 중에 static 제한자를 사용한 변수, 클래스로더가 클래스를 메모리에 올릴 때 올라가고, 프로그램이 종료될 때 까지 삭제되지 않는다.
•
클래스 변수의 사용법 : static [변수타입] [변수명] = ;
//필드변수
//인스턴스 변수
String nonStatic = "static 아님";
//클래스변수
static String staticVal = "static임";
//일반 메서드
public void testMethod() {
System.out.println("일반 메서드 입니다.");
}
//static 메서드
public static void testStatic() {
System.out.println("static 메서드 입니다.");
}
Java
복사
초기화
필드변수의 초기화 순서
•
인스턴스 변수 : jvm 의 기본값 → 필드변수에 직접 대입한 값 → 초기화 블록 → 생성자
•
클래스 변수 : jvm 의 기본값 → 필드변수에 직접 대입한 값 → static 초기화 블록
static 초기화 블록
클래스 로더가 클래스를 메모리에 올리는 시점 → 클래스가 최초로 사용되는 시점에 동작