배열의 생성과 선언, 배열의 인덱스
배열이란?
- "배열은 같은 타입의 여러 변수를 하나의 묶음으로 다루는 것"
예를 들어서 성적 처리 프로그램을 작성한다고 했을 때,
여러 학생의 점수를 다룰려면 어떻게 해야할까?
변수에 번호를 붙여서 이런식으로 저장을 해야하는데,
int score1, score2, score3, score4, score5;
만약에 학생이 100명, 1000명이면 변수를 일일이 저장하기 까다롭다.
그래서 배열이 필요하다.
만약에, 변수를 선언하면, 저장공간은 아래와 같이 될 것이다.
변수의 이름을 통해서 이 저장공간을 읽어오고 할 것이다.
만약에, 배열을 선언하는 경우, 이와 같이 선언한다.
int[] score = new int[5];
이 문장이 무슨 뜻이냐면, int값 5개를 저장할 수 있는 배열을 만든다는 뜻이다.
이 문장이 실행되고 나면, 아래와 같이 저장공간이 5개 생긴다.
그런데, 이 저장공간에 이름이 없다.
왜 이름이 없냐면, 우리가 지금 변수처럼 저장공간 하나하나에 일일이 이름을 다 붙이는게 불편해서 배열을 쓰는건데,
이 배열에 우리가 변수 이름주듯이 하나하나 이름을 다 준다면 변수와 다를게 없다.
그래서 이름이 없다.
대신, 자동으로 번호가 붙는다. (0,1,2,3,4)
이것을 배열의 인덱스라고 부르며 0부터 시작한다.
이 배열을 다루려면 참조변수가 필요하다.
이 값의 각 저장공간에 이름을 붙이는 대신에, 참조변수에 이름을 붙이고 참조변수를 통해서 저장공간들을 다루게 된다.
그래서 참조변수가 필요하다.
이 저장공간을 어떻게 사용하냐면,
참조변수의 이름과 인덱스 번호를 이용해서 저장공간을 사용하게 된다.
위에 0이 저장되어있는 저장공간은 score[0]이라고 자동적으로 이름이 만들어져 있는 것이다.
이게 배열의 편리한 점이다.
배열의 특징은,
"같은 타입"만 저장 가능하다.는 점과,
각 저장공간이 붙어있으므로 연속적이다. 라는 특징을 가지고 있다.
배열의 선언과 생성
- 배열의 선언 - 배열을 다루기 위한 참조변수의 선언
배열은 사용하기전에 먼저, 선언 해주어야한다. 그리고 생성을 해야 실제 저장공간이 만들어진다.
배열을 선언하는 것은 변수 선언과 약간 다르다.
변수는, 선언하는 순간 저장공간이 만들어지는데,
배열은 선언한다는 것은 실제 배열에 저장공간이 만들어지는 것이 아니라, 배열을 다루기 위한 참조변수가 만들어 지는 것이다.
배열을 선언하는 방법은 2가지가 있는데,
첫번째 방법은,
배열을 알리는 기호[]를 타입뒤에 붙히는 방법이 있고,
두번째 방법으로는,
배열의 이름옆에 기호[]를 붙히는 방법이 있다.
첫번쨰 방식을 Java에서 주로 선호해서 사용되는데,
배열의 기호[]가 타입의 일부라고 보기때문이다.
어느 방법을 써도 상관없다. 본인에게 편한 방법을 쓰자.
타입[] 변수이름; // 배열을 선언(배열을 다루기 위한 참조변수 선언)
변수이름 = new 타입[길이]; // 배열을 생성(실제 저장공간을 생성)
배열을 선언하는 방법은, 위의 예시처럼 배열의 타입에다가 []를 붙히고 배열의이름(참조변수의 이름)을 적어주면 된다.
배열을 생성하는 방법은, 변수이름 = new 타입[길이]; 로 생성한다.
실제 예시를 살펴보자.
int[] score; // int타입의 배열을 다루기 위한 참조변수 score선언
score = new int[5]; // int타입의 값 5개를 저장할 수 있는 배열 생성
integer배열을 다루기 위한 참조변수 score를 선언했고,이 문장을 실행하면 아래와 같이 참조변수가 만들어진다.
이 참조변수는 앞으로 만들 배열을 다루는데에 사용될 것이다.
그다음, 두번쨰 문장인 배열생성 문장까지 실행되면, int값을 저장할 수 있는 공간 5개를 실제로 만들게 된다.
그 다음에, 이 저장공간이 메모리의 어딘가에 생성 되었고,
대입연산자에 의해서 그 주소를(0x100) 참조변수에 저장해서 사용하는 것이다.
이러한 과정으로 참조변수와 배열이 연결되는 것이다.
해당 배열의 저장공간 인덱스는 0부터 시작하여 0, 1, 2, 3, 4 이다.
그래서 해당 저장공간에 이름이 자동적으로 score[0], score[1], score[2]... 로 붙게 된다.
배열의 인덱스
- 배열의 인덱스 - 각 요소에 자동으로 붙는 번호
배열 score의 길이가 5일때 인덱스의 범위는 0~4이다.
score[3] = 100; // 배열 score의 4번째 요소에 100을 저장한다
이 문장을 실행하면 어떻게 될까?
score[3]에 100이 저장되게 된다.
int value = score[3]; // 배열 score의 4번째 요소의 값을 읽어서 value에 저장
이 문장은 value라는 변수에 score[3]의 값 100을 저장하는 문장이다.
그러면 value = 100이 된다.
'JAVA' 카테고리의 다른 글
배열의 출력 (0) | 2022.03.22 |
---|---|
배열의 길이, 배열의 초기화 (0) | 2022.03.22 |
break문, continue문, 이름붙은 반복문 (0) | 2022.03.20 |
while문, do-while문 (0) | 2022.03.20 |
중첩 for문 (0) | 2022.03.20 |
댓글
이 글 공유하기
다른 글
-
배열의 출력
배열의 출력
2022.03.22 -
배열의 길이, 배열의 초기화
배열의 길이, 배열의 초기화
2022.03.22 -
break문, continue문, 이름붙은 반복문
break문, continue문, 이름붙은 반복문
2022.03.20 -
while문, do-while문
while문, do-while문
2022.03.20