728x90

 

객체 배열

객체를 담는 배열

배열의 자료형을 클래스명(사용자 정의 자료형)으로 지정하여 활용

 

선언

자료형[] 배열명;

자료형 배열명[];

클래스명[] 배열명;

클래스명 배열명[];

 

할당

배열명 = new 자료형[길이];

배열명 = new 클래스명[길이]

자료형[] 배열명 = new 자료형[길이];

클래스명[] 배열명 = new 클래스명[길이];

 

 

 

초기화

배열명[인덱스] = 값;

배열명[인덱스] = new 클래스명();

 

iArr[0] = 10;

tArr[0] new Trainee();

iArr = {1,2,3};

tArr = {new Trainee(),new Trainee()};

 

 

선언과 동시에 할당 및 초기화

클래스명 배열명[] = {new 클래스명(), new 클래스명()};

 

 

객체 배열의 메모리 작동

선언된 변수명이 stack에서 공간이 만들어지고, 거기서 할당되면서 heap에서 공간이 생성되는데

이때,  배열 하나의 주소 안에서 배열의 각 인덱스번호 별로 주소가 다시 나눠지는 구조

 

728x90
반응형
728x90

 

 

stack & heap의 쓰레기값(garbage value)

변수 아무 값도 넣지 않고 선언만 해뒀을 경우, 컴퓨터가 랜덤값을 넣어놓는데 이 값을 의미함

 

쓰레기값은 스택에서 발생

다시말해서, 스택에 공간 만들어두고 아무 값도 넣지 않는다면(초기화를 하지 않는다면) 어떤 값도 들어가 있을 수 있다

 

new를 연산자를 만들어서 heap 메모리 영역에 공간을 생성 했지만, 초기화를 하지 않아 값을 넣은 적이 없지만 값은 들어가 있게된다. 이때 들어가 있는 것이 쓰레기 값(garbage value)이다. 

 

※ 변수는 초기화 해둘 것을 권장!

변수를 선언만 하면 메모리에 있던 쓰레기 값이 변수 선언과 함께 생성되기 때문에 후에 문제의 원이 될 수 있는데, 

쓰레기값을 전에 다른 프로그램에서 사용하고 있었다면, 그 프로그램이 종료되었더라도 실제 메모리에 저장되었던 데이터가 남아 있기 때문에 변수를 초기화 하지 않으면 에러가 발생할 수 있다

728x90
반응형

+ Recent posts