1. 배열의 선언
배열을 선언한다고 해서 저장할 공간이 생성되는 것이 아니라 배열을 다루는데 필요한 변수가 생성된다.
/* 배열 선언 */
int[] score;
/* 배열 생성 */
score = new int[5];
/* 합쳐서 사용 */
int[] score = new int[5];
2. 변수의 종류
변수의 종류 | 선언 위치 | 생성시기 |
클래스변수 (static) | 클래스 영역 | 클래스가 메모리에 올라갈 때 |
인스턴스변수 | 클래스 영역 | 인스턴스 생성시 |
지역변수 (함수 안) | 메서드 영역 | 변수 선언문 수행시 |
클래스 변수
- 같은 클래스의 모든 인스턴스들이 공유하는 변수
- 인스턴스 생성없이 '클래스이름.클래스변수명' 으로 접근
- 클래스가 로딩될 때 생성되고, 프로그램이 종료될 때 소멸
인스턴스 변수
- 인스턴스마다 다른 값 저장 가능
- 인스턴스 생성 후 '참조변수.인스턴스변수명'으로 접근
- 인스턴스를 생성할 때 생성되고, 참조 변수가 없을 때 가비지컬렉터에 의해 자동제거됨.
3. JVM의 메모리 구조
메서드 영역: 클래스 정보와 클래스변수가 저장되는 곳
호출스택: 메서드의 작업 공간, 메서드가 호출되면 메서드 수행에 필요한 메모리공간을 할당받고 메서드가 종료되면 사용하던 메모리를 반환한다.
- 메서드가 호출디면 수행에 필요한 메모리를 스택에 할당받는다.
- 메서드가 수행을 마치면 사용했던 메모리를 반환한다.
- 호출스택의 제일 위에 있는 메서드가 현재 실행중인 메서드다.
- 아래에 있는 메서드가 바로 위의 메서드를 호출한 메서드다.
힙: 인스턴스가 생성되는 공간. new 연산자에 의해서 생성되는 배열과 객체는 모두 여기에 생성된다.
4. 메서드의 오버로딩
오버로딩의 조건
- 메서드의 이름이 같아야 한다.
- 매개변수의 개수 또는 타입이 달라야 한다.
- 매개변수는 같고 리턴타입이 다른 경우는 오버로딩이 성립되지 않음.
'Backend Study > Java' 카테고리의 다른 글
[JAVA] 컬렉션 프레임워크 (0) | 2023.01.26 |
---|---|
[JAVA] 제어자, 다형성, 인터페이스, 내부 클래스와 익명 클래스 (0) | 2023.01.26 |
[JAVA] 상속 (0) | 2023.01.26 |
[JAVA] 생성자 (0) | 2023.01.26 |
[JAVA] 변수의 타입 (0) | 2023.01.26 |