안녕하세요 자바칩 프라푸치노입니다.
이번에는 일차원 배열에 대해서 알아보겠습니다.
1. 배열
배열이란
같은 데이터 타입의 여러 변수를 하나의 묶음으로 다루는 것입니다.
많은 양의 값을 다룰 때 유용합니다.
배열의 각 요소는 서로 연속적입니다.
메모리 공간에서의 모습을 살펴보겠습니다.
메모리상에 이렇게 연속적으로 값이 저장된 배열이 생깁니다.
2. 배열의 선언
타입 [] 변수이름 ;
이렇게 선언합니다.
int형이면
int[] i ;
라고 쓰고 int배열 i라고 합니다.
그러면 위의 메모리 그림으로 치면
stack영역에 i라는 메모리 공간이 생겼다는 말이구요
int [] i = new int[6];
이렇게 해주어야 비로소 heap영역에 6개의 방이 생성되는 것입니다.
6이 적힌 부분에는 원하는 길이의 숫자를 적어주시면 됩니다.
또 다른 방법은
int[]i = {0,1,2,3,4};
이렇게 바로 초기화를 해주셔도 되는데요
그러면 방은 저절로 5개가 만들어졌다는 말이 됩니다.
처음에 초기화하지 않고 방만 만들어주었다면
배열안의 값은 기본값으로 초기화 됩니다.
3. 배열의 길이
배열이름.length하면
배열의 길이 숫자가 나옵니다.
그러니까 위의
int[]i = {0,1,2,3,4};
이 배열의 길이를 알고싶다면
i.length를 하면 되고 , 5개의 방이 있으니 5가 나오겠습니다.
4. 배열의 인덱스
배열의 인덱스는 0부터 시작을 합니다.
그리고 []안에 적습니다.
그러니까
int[]i = {0,1,2,3,4};
이 배열에서 보자면
i[0]= 0;
i[1]=1;
i[2]=2;
i[3]=3;
i[4]=4;
이렇게 값을 가집니다.
그래서 1차원 배열에서
i[0] 이런식으로 쓴 값은 변수와 같은 역할을 합니다.
이름이 i[0]인 변수인 셈이죠.
그래서 i[0] = 5;
를 넣었다면
배열이
{5,1,2,3,4}
이렇게 바뀝니다.
마지막 인덱스는 배열 길이-1입니다.
0부터 시작하기에 당연한 결과입니다.
5. 예제
예제로 살펴보겠습니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
|
package sec01_firstArray;
public class Array_Ex1 {
public static void main(String[] args) {
int[] score = new int[10];//배열명은 곧 주소다.
// int 형 배열명 score(참조변수)에 int[10] = 40바이트 생성후, 주소값 넘김
for (int i = 0; i < score.length; i++) {
System.out.println("score[" + i +"]= " + score[i] );
// 10개의 방에 0값을 자동 초기화됨
}
int k = 1;
score[0] = 50;
score[1] = 60;
score[k + 1] = 70;
score[3] = 80;
score[4] = 90;
//score : int[] 주소값을 저장
// score[i] : 인덱스에 있는 실제 값을 의미(변수랑 같다)
System.out.println("------------------------------");
for (int i = 0; i < score.length; i++) {
System.out.println("score[" + i +"]= " + score[i] );
}//0으로 초기화 되었던 값들이 바뀐다.
int tmp = score[k+2] + score[4]; //tmp에 실제 값을 저장한다.
System.out.println("tmp : " + tmp);
System.out.println("score의 주소값: " + score.toString());
//주소값 출력. score는 배열명. 배열명은 주소이기 때문
}
}
|
cs |
int배열 score를 생성하고 10개의방을 주었습니다.
그럼 배열의 용량은 40바이트가 되었습니다.
그리고 처음에는 int의 기본값 0으로 다 초기화 되었겠죠
여기서 score.length는 배열의 길이이므로 10입니다.
출력을 해보면
역시나 마지막 인덱스는 10-1인 9가 나왔습니다.
다음 코드에서 k를 1로 선언하고
score에 값을 넣고 있습니다.
처음에는 0이었던 score[0]이 50이 되었고
score[k+1]은 score[2]라는 뜻이니
score[2] 에 70이 저장되었습니다.
그러면 score [5]부터 score[9]까지는 여전히 0이고
초기화해준 인덱스에는 값들이 들어가게 됩니다.
출력결과입니다.
다음 코드를 보시면
tmp 에 score[3] 의 값 + score[4]의 값을 하고있습니다.
위에서 각각 80과 90이었으니 80+90 이겠습니다.
그리고 score의 주소값을 출력하고 싶으면
score.toString을 사용하여 출력할 수 있습니다.
여기까지 1차원 배열 이론 마치겠습니다.
다음 포스팅에서는 1차원 배열 예제를 보겠습니다.
감사합니다.
'JAVA > java 이론' 카테고리의 다른 글
[자바JAVA] 객체지향개념1 - 클래스와 객체, 클래스 접근 제어자, 메서드 구성 (0) | 2020.10.07 |
---|---|
[자바 JAVA] 이차원 배열,int 2차원 배열, 향상된 for문 (0) | 2020.10.05 |
[자바JAVA] 반복문 for문, while문 , do while, continue, break (0) | 2020.09.22 |
[자바JAVA] 조건문과 난수 발생 Math.random() (0) | 2020.09.21 |
[자바 JAVA]연산자 - 연산자의 종류, 증감,부호,논리, 비트, 쉬프트, 비교, 삼항, 대입연산자 (0) | 2020.09.14 |