배열의 출력
'Arrays.toString(배열이름)' 메서드를 사용하여 출력할 수 있다.
이 메서드는 배열의 모든 요소를 [첫번째 요소, 두번째 요소, ...] 와 같은 형식의 문자열로 만들어서 반환한다.
Arrays.toString()을 사용하려면, 'import java.util.Arrays;'를 추가해야 한다.
// 배열 출력하기
int[] iArr = { 100, 95, 80, 70, 60 };
System.out.println(Arrays.toString(iArr)); // [100, 95, 80, 70, 60]
예외적으로 char 배열은 println 메서드로 출력하면 각 요소가 구분자 없이 그대로 출력되는데, 이것은 println 메서드가 char 배열일 때만 이렇게 동작하도록 작성되었기 때문이다.
char[] chArr = { 'a', 'b', 'c', 'd' };
System.out.println(chArr); // abcd
배열의 길이 변경하기
배열은 한번 선언되고 나면 길이를 변경할 수 없다. 배열에 저장할 공간이 부족한 경우에는 더 큰 길이의 새로운 배열을 생성한 다음, 기존의 배열에 저장된 값들을 새로운 배열에 복사하면 된다.
int[] arr = {44, 55, 66};
int[] expand = new int[5];
for (int i = 0; i < arr.length; i++) {
expand[i] = arr[i];
}
System.out.println(Arrays.toString(expand)); // [44, 55, 66, 0, 0]
배열의 길이를 변경하는 메서드를 만들어서 메서드호출을 통해 배열의 길이를 변경할 수 있다.
import java.util.Arrays;
public class Main4 {
public static int[] expandArr(int[] origin, int plus) {
int[] copy = new int[origin.length + plus];
for (int i = 0; i < origin.length; i++) {
copy[i] = origin[i];
}
return copy;
}
public static void main (String[]args){
// 다음과 같은 int 배열의 길이값을 증가시키고자 함
int[] arr = {44, 55, 66};
int[] expand = expandArr(arr, 2);
System.out.println(Arrays.toString(expand));
}
}
배열의 복사
배열을 복사하기 위해서는 새로운 배열을 생성한 다음, 기존의 배열에 저장된 값들을 새로운 배열에 복사해준다.
int[] arr = { 33, 44, 55 };
int[] copy = copyArr(arr);
int[] copy = new int[arr.length];
for (int i = 0; i < arr.length; i++) {
copy[i] = arr[i];
}
System.out.println(Arrays.toString(copy)); // [33, 44, 55]
System.out.println(copy == arr); // false (참조값이 다르다.)
배열을 복사하는 메서드를 만들어서 메서드호출을 통해 배열을 복사할 수 있다.
public class Main3 {
public static int[] copyArr(int[] origin) {
int[] copy = new int[origin.length];
for (int i = 0; i < origin.length; i++) {
copy[i] = origin[i];
}
return copy;
}
public static void main(String[] args) {
// 다음과 같은 정수 배열과 같은 길이와 원소를 가지는 배열 만들기(복사)
int[] arr = { 33, 44, 55 };
int[] copy = copyArr(arr);
System.out.println(Arrays.toString(copy));
System.out.println(copy == arr);
}
}
'Arrays.copyOf(원본배열, 원본 배열에서 복사해올 길이)' 메서드를 사용하여 배열을 복사할 수 있다.
// 배열 복사하기
int[] copy = Arrays.copyOf(new int[] { 44, 55, 66 }, 6);
System.out.println(Arrays.toString(copy)); // [44, 55, 66, 0, 0, 0]
배열의 비교
'Arrays.equals(배열, 배열)' 메서드를 사용하여 배열을 비교할 수 있다.
// 배열 비교하기
boolean result = Arrays.equals(new int[] { 10, 20, 30 }, new int[] { 10, 20, 30 });
System.out.println(result); // true
배열의 원소 초기화
'Arrays.fill(배열, 값)' 메서드를 사용하여 배열에 동일한 값을 저장할 수 있다.
// 배열 원소 초기화하기
int[] newArr = new int[10];
Arrays.fill(newArr, 10); // 원하는 숫자(10)로 초기화
System.out.println(Arrays.toString(newArr)); // [10, 10, 10, 10, 10, 10, 10, 10, 10, 10]
배열의 정렬(오름차순)
'Arrays.sort(배열)' 메서드를 사용하여 배열을 오름차순으로 정렬할 수 있다.
// 배열의 오름차순 정렬
int[] iArr = { 100, 95, 80, 70, 60 };
Arrays.sort(iArr);
System.out.println(Arrays.toString(iArr));
배열 합치기
import java.util.Arrays;
public class Main6 {
public static int[] newArr(int[] left, int[] right) {
int[] newArr = new int[left.length + right.length];
for (int i = 0; i < left.length; i++) {
newArr[i] = left[i];
}
for (int i = left.length; i < newArr.length; i++) {
newArr[i] = right[i - left.length];
}
return newArr;
}
public static void main(String[] args) {
int[] left = { 10, 20, 30 };
int[] right = { 40, 50, 60 };
int[] concat = newArr(left, right);
System.out.println(Arrays.toString(concat)); // [10, 20, 30, 40, 50, 60]
}
}
배열의 원소 값 비교
// 배열 원소 중 가장 큰 값 구하기
int[] arr = { 20, 30, 10, 50, 40 };
int max = arr[0];
for (int i = 1; i < arr.length; i++) {
if (max < arr[i]) {
max = arr[i];
}
}
System.out.println(max); // 50
// 배열 원소 값 바꾸기
int[] iArr = { 100, 95, 80, 70, 60 };
int tmp = iArr[0];
iArr[0] = iArr[1];
iArr[1] = tmp;
System.out.println(Arrays.toString(iArr)); // [95, 100, 80, 70, 60]
가변인자
메서드의 매개변수 개수를 지정해 주는 기능을 '가변인자(variable arguments)'라고 한다.
가변인자는 '타입... 변수명'과 같은 형식으로 선언한다.
가변인자를 매개변수 중에서 제일 마지막에 선언해야 한다.
public class Main9 {
public static void printAll(int... arr) {
for (int i = 0; i < arr.length; i++) {
System.out.println(arr[i]);
}
}
public static void main(String[] args) {
printAll(10, 20, 30, 40, 50);
}
}
10
20
30
40
50