[Java] 배열
in Java
배열
배열이란?
배열은 동일한 데이터 타입의 데이터를 연속된 공간에 저장하기 위한 자료구조입니다.
배열은 길이를 늘리거나 줄일 수 없는 특징을 가지고 있습니다.
배열이 생성되면 인덱스를 사용하여 개별 요소에 접근할 수 있습니다.
배열 선언
배열 선언 방법
// 방법1
타입[] 변수;
// 방법2
타입 변수[];
배열 선언 방법으로 방법1을 많이 씁니다.
배열 초기화
배열은 new
키워드를 사용해서 값을 초기화 할 수 있습니다.
int[] nums = new int[5]; // int 타입의 값이 들어갈 5개의 빈 공간 생성
nums[0] = 1;
nums[1] = 2;
nums[2] = 3;
nums[3] = 4;
nums[4] = 5;
선언과 동시에 특정 값으로 배열을 초기화할 수도 있습니다.
int[] nums = new int[] { 1, 2, 3, 4, 5 };
// 또는
int[] nums = {1, 2, 3, 4, 5};
주의할 점은 new
를 사용하지 않고 특정 값을 대입할 때, 배열 변수를 미리 선언한 후에는 값을 변수에 대입할 수 없습니다.
int[] nums;
nums = {1, 2, 3, 4, 5}; // 에러 발생
메서드의 매개변수가 배열 타입일 경우에도 주의해야 합니다.
public int sum(int[] nums) {
int result = 0;
for (int i = 0; i < nums.length; i++) {
result += nums[i];
}
return result;
}
int result = sum({1, 2, 3}); // 에러 발생
int result = sum(new int[]{1, 2, 3}); // result = 6;
배열의 변수는 참조 변수이기 때문에 null로 초기화할 수 있습니다.
int[] nums = null;
배열의 길이는 length를 사용해서 구하면 됩니다.
int[] nums = {1, 2, 3};
System.out.println(nums.length); // 3
배열 출력(Arrays.toString())
System.out.print()
메서드를 사용하여 배열의 값을 출력하면 이상한 값이 나옵니다. 배열의 변수는 참조 변수이기 때문에 메모리 주소값이 출력됩니다.
int[] nums = {1, 2, 3};
System.out.print(nums); // [I@24d46ca6
주소값이 아닌 사람이 읽을 수 있는 문자열로 확인하려면 Arrays.toStirng()
을 사용하면 됩니다.
int[] nums = {1, 2, 3};
System.out.print(Arrays.toString(nums)); // [1, 2, 3]
오름차순 정렬(Arrays.sort())
Arrays.sort()
를 사용하면 배열의 요소를 오름차순으로 정렬합니다.
int[] nums = { 1, 3, 2, 5, 4 };
Arrays.sort(nums);
System.out.print(Arrays.toString(nums)); // [1, 2, 3, 4, 5]
배열 복사(Arrays.copyOf())
Arrays.copyOf(복사할 배열, 복사할 길이)
은 지정된 길이로 새 배열을 만들고 원래 배열의 요소를 새 배열로 복사합니다.
int[] nums1 = {1, 2, 3};
int[] nums2 = Arrays.copyOf(nums1, 2);
int[] nums3 = Arrays.copyOf(nums1, nums1.length);
System.out.println(Arrays.toString(nums2)); // [1, 2]
System.out.println(Arrays.toString(nums3)); // [1, 2, 3]
배열 비교(Arrays.equals())
Arrays.equals()
는 요소별로 두 배열이 같은지 비교합니다.
int[] nums1 = {1, 2, 3};
int[] nums2 = {1, 2, 3};
System.out.println(Arrays.equals(nums1, nums2)); // true
System.out.println(nums1 == nums2) // false
배열이 가지고 있는 요소의 값을 비교하기 위해서는 Arrays.equals()
을 사용하고, ==
은 배열이 참조하는 객체가 같은 객체인지 확인하기 위해 사용됩니다.
향상된 for 문
자바는 배열 및 컬렉션을 좀 더 쉽게 처리하기 위해 향상된 for문을 제공합니다.
사용이 간편하고 가독성이 좋으며, 배열의 인덱션 문제를 해결할 수 있는 장점이 있습니다. 단점으로는 배열의 인덱션 문제는 해결이 가능하지만, 인덱스를 사용하지 못합니다.
for(타입 변수: 배열) {
실행문
}
int[] nums = { 1, 2, 3, 4, 5 };
int sum = 0;
for (int num : nums) {
sum += num;
}
System.out.print(sum); // 15
다차원 배열
배열은 또 다른 배열을 대입할 수 있습니다. 이러한 배열을 다차원 배열이라고 부릅니다.
변수[1차원][2차원]...[N차원인덱스]
2차원 배열 생성
int[][] nums1 = { { 1, 2, 3 }, { 4, 5, 6 }, { 7, 8, 9 } };
// 또는
int[][] nums2 = new int[][]{ { 1, 2, 3 }, { 4, 5, 6 }, { 7, 8, 9 } };