1. 배열(Array)

   1-1) 배열이란?

     - 같은 타입의 여러 변수를 하나의 묶음으로 다루는 것을 배열이라 한다.

     - 중요한 것은 같은 타입이어야 한다는 것이다.

 

   1-2) 배열 생성

     - 배열을 선언하는 방법은 타입의 변수를 선언하고 변수 또는 타입에 배열을 의미하는 대괄호[]를 붙이면 된다.

선언방법 선언 예(Stack 영역)
타입[] 변수이름; int[] score, String[] names;
타입 변수이름[]; int score[], String name[];

* 배열의 생성
  - 배열을 선언한 다음에는 배열을 생성해야 한다.
  - 배열을 선언한 것은 단지 생성된 배열을 다루기 위한 참조변수를 위한 공간이 만들어질 뿐이고,

  배열을 생성해야만 비로소 값을 저장할 수 있는 공간이 만들어지는 것이다.

* 배열 선언 및 생성 예

   타입[] 배열이름;

   → 배열을 선언(배열을 다루기 위한 참조변수를 선언, Stack 영역)
   배열이름 = new 타입[길이]

   → 배열을 생성(실제 저장공간을 생성, Heap영역을 가리키도록 지정)

   1-3) 배열의 길이와 인덱스

int[] score = new int[5];
  - 생성된 배열의 각 저장공간을 배열의 요소(element)라고 하며, 배열이름[인덱스]의 형식으로 요소에 접근한다.
  - 인덱스(index)배열의 요소마다 붙여진 일련번호로 각 요소를 구별하는데 사용된다.


 ※ 인덱스의 범위는 0부터 배열의 길이 -1까지 이다.

int[] score = new int[4];  → 길이 : 4, 인덱스범위 : 0~3


  - 배열에 값을 저장하고 읽어오는 방법은 변수와 같다.
  - 단, 변수이름 대신 배열이름[인덱스]를 사용한다는 점만 다르다.

* 배열의 길이
  - 배열의 길이는 배열의 요소의 개수, 즉 값을 저장할 수 있는 공간의 개수이다.
  - 배열의 길이는 양의 정수여야 한다.

  1-4) 배열의 초기화

    - 배열은 생성과 동시에 자동적으로 자신의 타입에 해당되는 기본값으로 초기화하므로 배열을 사용하기 전에 따로 초기화를 해주지 않아도 되지만 원하는 값을 따로 저장할 수 있다.

int[] score = new int[5];
score[0] = 10;
score[2] = 5;
score[4] = 2;

int[] score = new int[]{1,2,3,4,5};
int[] score = {1,2,3,4,5}; 선언과 생성을 동시에 할 시 new int[] 생략 가능

- 저장할 값들을 괄호{]안에 쉼표로 구분해서 나열하면 되고,
괄호안의 값의 개수에 의해 배열의 길이가 자동으로 결정되기 때문에 배열의 길이는 안 넣어도 된다.


int[] score;
score = new int[]{50,60,70,80,90};  → 가능한 방법
score = {50,60,70,80,90};   → 에러, 선언과 생성을 따로 하는 경우에는 new int[]생략 불가

  1-5) 배열의 출력

int[] arr = {100,95,80,70,60}  → 길이 : 5, 마지막인덱스 : 4

for (int i = 0; i < 5; i++){
     println(arr[i]);     arr[0], arr[1], arr[2], arr[3], arr[4],
}

for (int i = 0; i < arr.length; i++){    arr.length : 배열의 길이를 반환
     println(arr[i])     arr[0], arr[1], arr[2], arr[3], arr[4],
}

* 향상된 for문
for (int ele : arr){
     println(ele);
}

  1-6) 배열의 복사

① for문을 이용한 복사
int[] arr = new int[]{1,2,3,4,5};
int[] tmp = new int[arr.lenth *];

for() {
     tmp[i] = arr[i];
}

② System.arraycopy()를 이용한 배열의 복사
- for문 대신 System클래스의 arraycopy()를 사용하면 보다 간단하고 빠르게 복사할 수 있다.

int[] arr = new int[]{1,2,3,4,5};
int[] result = new int[arr.length * 2];

System.arraycopy( arr, 0, result, 0, arr.length );

 

2. 다차원 배열

   - 지금까지 우리가 배운 배열은 1차원배열이지만, 2차원 이상의 배열도 선언해서 사용할 수 있다.

 

   2-1) 2차원 배열의 선언과 인덱스

선언방법 선언 예
타입[][] 변수이름; int[][] score;
타입 변수이름[][]; int score[][];
타입[] 변수이름[]; int[] score[];

   - 2차원배열은 행과 열로 구성되어 있기 때문에 index가 행과 열에 각각 하나씩 존재한다.
   - 행 index의 범위는 0 ~ 행의길이-1 이고 열 index의 범위는 0 ~ 열의길이-1이다.
   - 각 요소에 접근하는 방법은 배열이름[행index][열index]이다.

 

   2-2) 2차원배열의 초기화

   - 2차원배열도 괄호를 사용해서 생성과 초기화를 동시에 할 수 있다.
   - 다만, 1차원배열보다 괄호{}를 한번 더 써서 행렬로 구분해준다.

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

 

 

'개발도전하기 > Java 기초' 카테고리의 다른 글

Java 기초 강의 3일차  (0) 2022.06.16
Java 기초 강의 2일차  (0) 2022.06.13
Java 기초 강의 1일차  (0) 2022.06.10
복사했습니다!