배열이 편하긴 하지만 가끔 사용하기 너무 복잡하게 느껴질때가 있다.
Arrays클래스에는 배열을 편하게 다룰수 있게 도와주는 유용한 메소드가 있다.
07. [자바] Arrays
Arrays 배열이 편하긴 하지만 가끔 사용하기 너무 복잡하게 느껴질때가 있다. Arrays클래스에는 배열을 편하게 다룰수 있게 도와주는 유용한 메소드가 있다. 배열 복사 - copyOf(), copyOfRange() 메소드
staticclass.tistory.com
배열(array)이란?
같은 타입의 여러 변수를 하나의 묶음으로 다루는 것을 '배열(array)'이라고 한다.
만약 10,000개의 데이터를 저장하기 위해 10,000개의 변수를 선언해야 한다면 어떠할까?
상상만으로도 끔찍하다, 배열을 사용하면 많은 양의 데이터를 다루기 편해진다.
배열은 같은 타입의 여러 변수를 하나의 묶음으로 다루는 것
5명의 시험 점수를 저장 하려고 할때 배열을 사용하지 않는다고 하면
int score1, score2, score3, score4, score5;
이런식의 5개의 변수를 선언해야 하지만
배열을 사용하면 간단해진다
int[] score = new int[5]; // 5개의 int 값을 저장할 수 있는 배열 생성
위의 배열은 score[0] 부터 score[4]까지 총 5개의 공간을 갖는다
배열의 선언과 생성
배열을 선언 하는 방법은 원하는 타입의 변수를 선언하고 변수를 배열을 의미하는 대괄호[]를 붙이면 된다.
방식은 2가지가 있다
int[] score // 선언
=
new int[5] // 생성
int[] score = new int[5]; // 타입[] 변수이름;
String[] name = new String[5]; // 타입[] 변수이름;
OR
int score[] = new int[5]; // 타입 변수이름[];
String name[] = new String[5]; // 타입 변수이름[];
배열의 길이와 인덱스
배열의 index는 배열의 요소마다 붙여진 일련번호이다.
배열이 지하철이라고 생각하고
index를 지하철의 첫번째 칸, 두번째 칸, 세번째 칸 처럼 한칸한칸이라고 생각하면 편하다
하지만 배열은 지하철과 다르게 0번째 칸부터 시작한다.
예를들어 길이가 5인 배열은 모두 5개의 저장공간을 가지며 1부터 5까지가 아닌 0부터 4까지이다.
int[] score = new int[5]; // 길이가 5인 int배열
[ index : 0 ][ index : 1 ][ index : 2 ][ index : 3 ][ index : 4 ]
배열에 값을 저장, 읽어오기
배열에 값을 저장하고 읽는 방법은 변수와 다른듯 같다.
score[0] = 100; // 배열 score의 0번째 index에 100을 저장.
int val = score[0]; // 배열 score의 0번째 index에 저장된 값을 val에 저장
배열의 index가 적다면 score[0] = 100; 과 같이 하나하나 넣는것이 가능 하겠지만
index의 수가 많다면 하나하나 넣는것도 힘든 일이다
score[0] = 0;
score[1] = 1;
score[2] = 2;
score[3] = 3;
···
score[99] = 99;
다행히 배열은 index에 상수가 아닌 변수를 사용하는것이 가능해 for문을 이용한 반복으로
index에 값을 넣는것이 가능하다.
for(int i = 0; i<100 ; i++) {
score[i] = i;
}
0번부터 99번까지 손으로 하나하나 넣는게 아닌 반복문을 이용해 넣는것이 가능하다
한가지 주의할 점은 index의 범위를 넘어난 값을 index로 사용시
(ArrayIndexOutOfBoundsException)이 발생할 수 있다.
int[]score = new int[5]; // 길이가 5인 배열, index는 0~4
score[5] = 100; // index의 범위를 벗어났다.
//ArrayIndexOutOfBoundsException 발생
사실 평소 컬렉션 객체를 이용하다보니 배열을 쓸 일이 없었고 배열을 선언하고 생성하는것 마져
헷갈려지려 하는 상황이었는데 이렇게 한번 정리를 하고 나니 배열에 대한 거부감 없이 읽거나 사용이
더욱 편해진것 같다👍
댓글