반응형
변수의 종류
1. 클래스 변수
- static 키워드를 가지고 필드에 선언하는 변수 = 정적 필드 (메모리의 static영역 사용)
- 프로그램 시작시 생성, 프로그램 종료시 소멸
2. 멤버 변수(인스턴스 변수)
- static 키워드 없이 필드에 선언하는 변수 (메모리의 heap영역 사용)
- 인스턴스 생성 시 생성, 참조하지 않을시 소멸(가비지컬렉터가 소멸시킴)
3. 지역 변수
- 메소드, 생성자, 초기화 블록 내부에서 선언하는 변수
- 메소드 호출 시 생성, 메소드 종료시 소멸
public class KindsOfVariable { 클래스 영역의 시작
(1) 클래스 영역에 작성하는 변수를 필드라고 함
(2) 인스턴스 변수(=전역변수)
private int globalNum;
(3) 클래스 변수(=정적 필드)
public void testMethod(int num) { 메소드 영역의 시작
↑
(4) 괄호 안에 선언하는 변수는 매개변수
(매개변수도 일종의 지역 변수)
(5) 지역변수
int localNum;
System.out.println(num);
↑
매개변수는 호출 시 값이 넘어와서 변경되기 때문에 초기화 필요없음
지역변수는 선언 외에 다시 사용하기 위해서는 반드시 초기화 필요
System.out.println(globalNum);
↑
전역변수는 클래스 전역에서 사용 가능
} 메소드 영역의 끝
public void testMethod2() {
(x) System.out.println(localNum);
↑
지역 변수는 해당 지역(블럭 내)에서만 사용 가능
System.out.println(globalNum);
System.out.println(staticNum);
↑
전역 변수는 다른 메소드에서도 사용 가능함.
}
반응형
4. 여러 변수의 초기화 방법
(1) 필드를 초기화하지 않으면 JVM이 정한 기본 값으로 객체가 생성
(2) 명시적인 초기화
private String name = "신라면";
private int price = 100;
private static String brand = "농심";
(3) 인스턴스 초기화 블록
{ name = " 라면"
price = 500;
brand = "삼양"; }
=> 인스턴스 초기화 블럭이 동작하는 시점에는 이미 최화가 진행 된 정적 필드에
인스턴스 초기화 블럭에서 대입한 값으로 덮어쓰게 된다.
(4) static 초기화 블록
static {
brand = "롯데";
=> static 초기화 블록에서는 non=static 필드를 초기화 하지 못함.
정적 초기화 블럭의 동작 시점(프로그램 실행 시)에는 인스턴스가 아무것도 존재할 수 없기 때문에
존재하지 않는 인스턴스 변수에 초기화 하는 것은 시기 상으로 불가능 함.
}
(5) 생성자로 staic 변수 초기화시 클래스명.변수명 = 변수명; 으로 초기화
반응형
'프로그래밍 > java' 카테고리의 다른 글
[자바JAVA] 상속(super,오버라이딩@Override) (0) | 2022.07.12 |
---|---|
[자바JAVA] 객채 배열(초기화, 저장구조) (0) | 2022.07.11 |
[자바JAVA] Final & static ( 필드, 메소드) (0) | 2022.07.07 |
[자바JAVA] 파라미터(parameter)_가변파라미터 (0) | 2022.07.07 |
[자바JAVA] 오버로딩 (Overloading) (0) | 2022.07.07 |