배열이름.length를 통해 배열의 길이를 조회할 수 있다.자료형[] 변수 또는 자료형 변수[]
| 자료형 | 배열이름 | 선언 |
|---|---|---|
int | iArr | int[] iArr; |
char | cArr | char[] cArr; |
boolean | bArr | boolean[] bArr; |
String | strArr | String[] strArr; |
Date | dateArr | Date[] dateArr; |
배열을 다음과 같이 생성할 때, 자료형의 기본값으로 초기화가 된다.
자료형[] 배열이름 = new 자료형[길이];

배열의 길이를 설정하지 않고, 배열을 생성 및 값을 초기화하는 방법은 다음과 같다. 1의 방법처럼 길이와 함께 값을 초기화 하는 것은 불가능하다.
자료형[] 배열이름 = new 자료형[] {값1, 값2, 값3, 값4};
좀 더 생략하여 다음과 같이 배열을 선언과 동시에 초기화할 수 있다. 다만 선언과 동시에 할 때만 가능하며, 선언을 이미 한 뒤 나중에 할당하는 것은 불가능하다.
자료형[] 배열이름 = {값1, 값2, 값3, 값4};
String과 같은 참조형 변수의 경우 기본값으로null이 사용된다.
for 문반복문을 이용하여 배열의 원소를 순회할 수 있다. 배열이름.length을 이용한다.
int[] intArray = {1, 3, 5, 7, 9};
for (int i=0; i<intArray.length; i++) {
System.out.println(intArray[i]);
}
for-each 문가독성이 개선된 반복문으로, 배열 및 Collections에서 사용이 가능하다. 인덱스 대신 직접 원소에 접근하는 변수를 제공한다.
int[] intArray = {1, 3, 5, 7, 9};
for (int x: intArray) {
System.out.println(x);
}
반복문을 통해서 출력할 수도 있지만, Arrarys.toString(배열)을 통해 출력할 수 있다.
int[] intArray = {1, 3, 5, 7, 9};
System.out.println(Arrays.toString(intArray)); // [1, 3, 5, 7, 9]
그냥
intArray를 출력하면 원소가 아닌 참조값이 출력된다.
배열은 생성하면 길이를 변경할 수 없기 때문에, 더 많은 저장공간이 필요하다면 큰 배열을 생성하고 이전 배열의 값을 복사 해야한다.
반복문을 통해 배열의 원소를 복사한다.
int[] nums = {13, 56, 1, 99, 85};
int[] tmp = new int[nums.length * 2];
for (int i=0; i<nums.length; i++) {
tmp[i] = nums[i];
}
System.out.println(Arrays.toString(tmp)); // [13, 56, 1, 99, 85, 0, 0, 0, 0, 0]
새로운 배열 = Arrays.copyOf(원본 배열, 새로운 배열의 크기)
int[] nums = {13, 56, 1, 99, 85};
int[] tmp = Arrays.copyOf(nums, 10)
System.out.println(Arrays.toString(tmp)); // [13, 56, 1, 99, 85, 0, 0, 0, 0, 0]
System.arraycopy(원본 배열, 원본 배열의 시작점, 복사 배열, 복사 배열의 시작점, 복사할 크기)
int[] nums = {13, 56, 1, 99, 85};
int[] tmp = new int[10];
System.arraycopy(nums, 0, tmp, 0, nums.length);
System.out.println(Arrays.toString(tmp)); // [13, 56, 1, 99, 85, 0, 0, 0, 0, 0]
for 문을 활용한다.
int min = Integer.MAX_VALUE; // int형 중에서 제일 큰 값
int max = Integer.MIN_VALUE; // int형 중에서 제일 작은 값
for (int i=0; i<nums.length; i++) {
if (nums[i] > max) {
max = nums[i];
}
if (nums[i] < min) {
min = nums[i];
}
}
System.out.printf("min: %d, max: %d%n", min, max);
for-each 문을 활용한다.
int min = Integer.MAX_VALUE; // int형 중에서 제일 큰 값
int max = Integer.MIN_VALUE; // int형 중에서 제일 작은 값
for (int num: intArray) {
if (num > max) {
max = num;
}
if (num < min) {
min = num;
}
}
System.out.printf("min: %d, max: %d%n", min, max);
또는 함수를 활용한다.
int min = Integer.MAX_VALUE; // int형 중에서 제일 큰 값
int max = Integer.MIN_VALUE; // int형 중에서 제일 작은 값
for (int i=0; i < nums.length; i++) {
min = Math.min(min, nums[i]);
max = Math.max(max, nums[i]);
}
System.out.printf("min: %d, max: %d%n", min, max);
초기 최댓값 또는 최솟값을 설정하는 방법으로는
MIN_VALUE와MAX_VALUE를 활용하거나, 배열의 가장 첫번째 원소를 활용한다.
주어진 배열에서 두 수 N, M이 주어질 때 N번 인덱스부터 M번 인덱스까지의 합을 구한다.
int sum = 0;
for (int i=N; i<=M; i++) {
sum += arr[i];
}
System.out.println(sum);
또는 누적합을 모두 구하여 뺄셈 연산을 통해 구할 수도 있다.
for (int i=1; i<=M; i++) {
arr[i] += arr[i - 1];
}
int tmp = 0;
if (N != 0) {
tmp = arr[N - 1];
}
System.out.println(arr[M] - tmp);
int [] count = new int[10]; // 수의 범위는 1부터 9까지
for (int i=0; i<arr.length; i++) {
count[arr[i]]++;
}
System.out.println(Arrays.toString(count));
크기 순으로 정렬하였을 때 가장 중앙에 위치하는 값을 말한다. 카운팅 정렬을 이용한다.
int [] count = new int[10];
for (int i=0; i<arr.length; i++) {
count[arr[i]]++;
}
int sum = 0;
int median = 0;
for (int i=1; i<=9; i++) {
sum += count[i];
if (sum >= (arr.length + 1) / 2) {
median = i;
break;
}
}