여러개의 값들을 하나의 이름과 인덱스로 관리하기 위해 사용
규칙성이 없는 값들에 규칙성을 부여하기 위해 사용
ex) String[] arr = {"김민성", "치킨", "자전거", "나무"};
같은 규칙성이 없는 값들에 인덱스르 부여해 규칙성있게 사용 가능
배열에 값을 할당해주면서 생성 : 자료형[] 배열명 = {값1, 값2, 값3, ...};
배열의 길이만 지정(빈 배열 생성) : 자료형[] 배열명 = new 자료형[칸수];
int[] arr = {1,2,3,4,5}; 를 생성했다고 해보자. 그렇다면 각 요소들을 나타내기 위해서는 인덱스를 사용해야 한다. 예를 들어 1을 가져오고 싶으면 배열에서 0번째 값을 가져오면 되는것이다. 따라서 arr[0]의 값이 1이 된다. 마찬가지로 3을 가져오고 싶으면 arr[2]를 하면 되는 것이다.arr[0]을 하는데 이는 '100번지로 이동해서 0번 움직여라' 라는 뜻으로 결국 1을 가져오는 것이다. 마찬가지로 3을 가져오고 싶으면 arr[2] 를 하는데 이는 arr값에 저장된 100번지로 이동해서 2번 이동해 거기 있는 값을 가져오라는 뜻이 된다. 따라서 3을 가져오는 것이다.배열의 길이 : 배열이름.length;
public class Main {
public static void main(String[] args) {
int[] arr = {1,2,3,4,5}; // int타입의 배열 arr 생성과 1~5값 할당
for (int i = 0; i < arr.length; i++) {
System.out.println(arr[i]);
}
// i가 0 이상 배열의길이 미만의 값을 가질동안 배열의 i번째값 출력 반복
}
}
위처럼 반복문에서 i의 범위를
arr.length를 이요해 지정하면 arr배열에 값이 추가되거나 삭제되어 길이가 변경되더라도 반복문 안에서 i의 범위를 바꿔줄 필요가 없다.
String 배열의 선언과 초기화
public class Main {
public static void main(String[] args) {
String[] name = new String[3];
name[0] = "김";
name[1] ="민";
name[2] ="성";
}
}
String은 클래스이므로 초기화 할때
name[0] = new String("김");처럼 초기화를 해줘야한다. 그러 나 String 클래스만 예외적으로name[0] = "김";과 같이 간략하게 표현하는 것이 허용된다.
2차원 배열 선언과 초기화
자료형[][] 배열명 = {
{값1, 값2,...},
{값3, 값4,...},
...
}
public class Main {
public static void main(String[] args) {
int[][] arr = { // 2차원 배열 arr을 생성하고 1~9까지 값으로 초기화
{1,2,3},
{4,5,6},
{7,8,9}
};
for (int i = 0; i < arr.length; i++) {
for (int j = 0; j < arr[i].length; j++) {
System.out.println(arr[i][j]);
}
}
}
}
2차원 배열의 값을 순서대로 출력하고 싶다면 2중 for문을 사용하면 된다. i가 0일 때, j는 0이상 i(0)번째 행의 길이 이하의 값이 되서 j가 0, 1, 2 가 되고. 마찬가지로 i가 1일때 2일때도 j가 0, 1, 2를 반복하게 되는 것이다. 따라서 반복문이 돌때마다
arr[i][j]를 반복해주면arr[0][0],arr[0][1],arr[0][2],arr[1][0],arr[1][1]... 순서대로 출력되어서 1부터 9까지가 출력되는 것이다.
다차원 배열은 각 행마다 열의 개수가 모두 같은 정방배열로도 만들 수 있지만, 행마다 열의 개수가 다른 비저방 배열로도 만들 수 있다. 2차원 배열은 배열안에 배열이 있는 형태이므로 내부의 배열의 길이를 각각 다르게 설정하면 비정방 배열이 되는 것이다.