1. 배열
선언 ( [] )
- int와 같은 기본형 변수는 1개의 값만 변수에 저장할 수 있다면, int[]와 같은 배열형 변수는 여러개를 변수에 저장할 수 있음
- 단, 하나의 배열형 변수에는 같은 타입의 변수만 담을 수 있음
- 한번에 많은 양의 데이터를 다루거나 계산할 때 사용
- 선언방법
- 타입 [] 변수; (ex. int[] intArray;)
- 타입 변수[]; (ex. int intArray[];)
생성 ( new [] )
- 참조형 변수들처럼 new 명령을 통해 생성하며, 대괄호[] 안에 크기를 지정
- 1부터 시작이 아닌 0부터 시작이기 때문에 크기를 8로 지정했다면 0-7까지 있음

- 참조형 변수이기 때문에 실제 값을 담지 않고 실제값의 주소값을 저장하고 있음
순회 ( [i] )
- 배열 안에 담겨있는 변수들을 하나씩 꺼내서 사용하는 것
//길이가 8인 정수배열 선언
int[] intArray = new int[3];
// 배열이 초기화된 값을 출력해본다.
for(int i=0; i<intArray.length; i++) { // .length 는 배열의 길이
System.out.println(intArray[i]);
}
// 출력
0
0
0
🤓 .length() 메서드
- 배열이 지원하는 메서드로써 해다 배열의 길이값을 응답해
초기화 ( ={…} )
- 중괄호{}를 사용한 초기화
- 반복문 for문을 사용한 초기화 (혹은 향상된 for문)
- Arrays.fill 메소드를 사용한 초기화
- Arrays 클래스는 Java에서 기본으로 제공하는 메소드가 담긴 클래스
// 배열 초기화
import java.util.Arrays; // Arrays 클래스를 import 해주세요!
public class Main {
public static void main(String[] args) {
//1. 배열에 특정값 대입하며 선언
int[] intArray = {1, 2, 3, 4, 5};
String[] stringArray = {"a", "b", "c", "d"};
//2-1. for문을 통해 값을 대입
for (int i = 0; i < intArray.length; i++) {
intArray[i] = i;
}
//2-2. 향상된 for문을 통한 배열 출력
for (int i : intArray) {
System.out.print(i); // 01234
}
System.out.println(); // 줄바꿈
//3. 배열의 주소를 모두 같은값으로 초기화
Arrays.fill(intArray, 1);//배열의 모든 값을 1로 초기화
for (int i : intArray) {
System.out.print(i); // 11111
}
}
}
// 출력
01234
11111
복사 ( .clone() )
- 얕은 복사
- 배열 변수간에 대입 연산자 =를 사용해서 복사를 하게 되면 주소값만 복사가 됨
- 주소값만 복사되었기 때문에 실제값은 1개로 유지
- 주소값만 복사된다는 것은 변수명은 서로 다르지만 같은 값을 보고 있다는 것을 뜻
// 얕은 복사 int[] a = { 1, 2, 3, 4 }; int[] b = a; // 얕은 복사 b[0] = 3; // b 배열의 0번째 순번값을 3으로 수정했습니다. (1 -> 3) System.out.println(a[0]); // 출력 3 <- a 배열의 0번째 순번값도 3으로 조회됩니다.
- 깊은 복사
- 진짜 새로운 배열을 똑같이 만들고 싶을 때 사용
- 실제 값을 가지고 있는 배열의 기본형 값을 꺼내서 복사
- 반복문 for문을 통해 복사해주는 방법과 여러 메서드를 사용하는 방법이 있음
// 깊은 복사 int[] a = { 1, 2, 3, 4 }; int[] b = new int[a.length]; for (int i = 0; i < a.length; i++) { b[i] = a[i]; // 깊은 복사 } b[0] = 3; // b 배열의 0번째 순번값을 3으로 수정했습니다. (1 -> 3) System.out.println(a[0]); // 출력 1 <- 깊은 복사를 했기때문에 a 배열은 그대로 입니다. // 깊은 복사 메서드 // 1. clone() 메서드 int[] a = { 1, 2, 3, 4 }; int[] b = a.clone(); // 가장 간단한 방법입니다. // 하지만, clone() 메서드는 2차원이상 배열에서는 얕은 복사로 동작합니다!! import java.util.Arrays; public class Main { public static void main(String[] args) { // 2. Arrays.copyOf() 메서드 int[] a = { 1, 2, 3, 4 }; int[] b = Arrays.copyOf(a, a.length); // 배열과 함께 length값도 같이 넣어줍니다. } }
2. String 배열
선언, 생성, 초기화
// String 배열을 아래와 같이 선언과 생성할 수 있습니다.
String[] stringArray = new String[3];
// 선언 후 하나씩 초기화 할 수 있습니다.
stringArray[0] = "val1";
stringArray[1] = "val2";
stringArray[2] = "val3";
// 선언과 동시에 초기화 할 수 있습니다.
String[] stringArray1 = new String[]{"val1", "val2", "val3"};
String[] stringArray2 = {"val1", "val2", "val3"};
String 기능 활용 ( =char 배열)
- char 배열은 “문자배열”이고 String은 문자열이다
- String = char[]
🤓 기본형 변수는 소문자로 시작하고 참조형 변수는 대문자로 시작함
- 참조형 변수가 더 많은 기능을 가지고 있기 때문에 String 배열을 더 많이 사용함

// String 기능 활용하기
String str = "ABCD";
// length()
int strLength = str.length();
System.out.println(strLength); // 4 출력
// charAt(int index)
char strChar = str.charAt(2); // 순번은 0부터 시작하니까 2순번은 3번째 문자를 가리킵니다.
System.out.println(strChar); // C 출력
// substring(int from, int to)
String strSub = str.substring(0, 3); // 0~2순번까지 자르기 합니다. (3순번은 제외)
System.out.println(strSub); // ABC 출력
// equals(String str)
String newStr = "ABCD"; // str 값과 같은 문자열 생성
boolean strEqual = newStr.equals(str);
System.out.println(strEqual); // true 출력
// toCharArray()
char[] strCharArray = str.toCharArray(); // String 을 char[] 로 변환
// 반대로 char[] 를 String로 변환하는 방법
char[] charArray = {'A', 'B', 'C'};
String charArrayString = new String(charArray); // char[] 를 String 으로 변환
3. 다차원 배열
2차원 배열, 순회
- 선언
- 1차원 배열에 대괄호를 하나 더 추가해주면 됨
- int[][] array
- int array[][]
- int[] array[]
- 1차원 배열에 대괄호를 하나 더 추가해주면 됨
- 생성
- 대괄호를 하나 더 추가해줌
- int[][] array = new int[][];
- 대괄호를 하나 더 추가해줌
- 초기화
// 중괄호를 사용해 초기화
int[][] array = {
{1, 2, 3},
{4, 5, 6}
};
// 반복문을 통한 초기화
int[][] array = new int[2][3]; // 최초 선언
for (int i = 0; i < array.length; i++) {
for (int j = 0; j < array[i].length; j++) {
arr[i][j] = 0; // i, j 는 위 노란색 네모박스 안에있는 숫자를 의미하며 인덱스 라고 부릅니다.
}
}
가변 배열
- 2차원 배열을 생성할 때 열의 길이를 생략하여, 행마다 다른 길이의 배열을 요소로 저장할 수 있음
- 이렇게 행마다 다른 길이의 배열을 저장할 수 있는 배열을 가변 배열이라고 함
// 가변 배열 // 선언 및 초기화 int[][] array = new int[3][]; // 배열 원소마다 각기다른 크기로 지정 가능합니다. array[0] = new int[2]; array[1] = new int[4]; array[2] = new int[1]; // 중괄호 초기화할때도 원소배열들의 크기를 각기 다르게 생성 가능합니다. int[][] array2 = { {10, 20}, {10, 20, 30, 40}, {10} };
2차원 배열 이상의 다차원 배열
- 3차원 배열의 경우
- 선언 : int[][][] multiArrary
- 초기화 : {{{배열원소1}, {배열원소2}}, {{배열원소3}}}
다차원 배열 조회
- 2차원 배열을 조회할 때는 2차원 인덱스를 가진 만큼 2중 for문을 통해 출력 가능
- 2중 for문을 통해 가변 배열도 출력 가능