본문 바로가기

프로그래밍 언어/JAVA

JAVA 배열

SMALL

배열


배열이란?

배열은 같은 타입의 변수 여래개를 하나로 묶어둔 형태이다. 만약 배열을 쓰지 않고 변수 10개를 만들려면 변수10개마다 각각의 이름을 지정해야한다. 


이렇게 힘들게 변수들을 초기화 하지 않아도 간편하게 해줄수 있는게 배열이다.

배열을 생성하는 방법은 2가지이다.


1.배열의 길이만 정해서 생성하는 방법


타입[] 배열이름 = new 타입[길이]; 이나 타입 변수이름[] = new 타입[길이];

ex)int arr[] = new int[10];


2.배열의 길이와 값을 동시에 생성하는 방법


타입[] 배열이름 = new 타입[] {데이터,데이터,데이터,데이터,데이터};

ex)int[] arr = new int[] {1,2,3,4,5};


※ {데이터, 데이터 , 데이터, , } 이렇게 하면 길이는 5개이고 첫번째부터 세번째까지 데이터가 들어가고 남는 공간은 디폴트값으로 채워진다.


생성된 배열의 변수하나를 부르는 방법은 다음과 같다.

배열이름[인덱스 값]

인덱스 값은 1부터 시작이 아닌 0부터 시작이다. 

그래서 arr배열의 첫번째arr[0]이다.


다음은 배열에 값을 넣고 그 값의 평균을 구하는 예제이다.




그런데 만약 배열이름[인덱스 값]을 안하고 배열이름만 프린트하면 어떻게 될까?



보다시피 이상한 것이 적혀있다. 

이것이 왜 이렇게 되냐면 배열을 생성할때 메모리영역에는 다음과 같이 저장된다.




참조변수는 변수의 주소값을 저장한다. 그래서 num을 프린트하면 주소값이 나오는 것이다.

그리고 참조변수를 통해 heap메모리영역에있는 데이터들을 불러온것이다. heap 영역에 있는 데이터는 그냥 가져올수 없고 참조변수를 통해서 가져올수 있다.

만약 참조변수의 값을 다른 참조변수에 넣으면 어떻게 될까?




메모리영역은 다음과같다.


다음과 같이 a와 b가 참조하는 영역은 같은 구역이고 a를 통하여 값을 바꾸면 b를 통해 참조하여 출력했을 때도 변한 값이 된다.

그리고 heap메모리영역에 있는 [I@566776ad는 이제 찾을수 없다.




LIST

'프로그래밍 언어 > JAVA' 카테고리의 다른 글

JAVA 반복문 while  (0) 2019.07.21
JAVA 반복문 for  (0) 2019.07.08
JAVA 조건문 switch  (0) 2019.06.09
JAVA 조건문 if()  (0) 2019.05.31
JAVA 연산자  (0) 2019.05.21