본문 바로가기

Backend Study/Java

[JAVA] 배열, 변수와 메서드

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