Java] Array

배열은 Fix Length이기에 길이를 크게 해서 값을 더하고 싶은 경우

큰 길이의 배열을 선언하고 이전의 값들을 가지고 와서 넣어주고 추가하면 된다.

배열의 선언과 초기화

1차 배열

1
2
3
4
int[] arr1 = new int[3];
int[] arr2 = new int[3] {1,2,3}; //Error
int[] arr3 = new int[] {1,2,3};
int[] arr4 = {1,2,3};

2차 배열

1
int[][] arr = new int[3][];

2차열 배열에서 가로의 길이가 정해지지 않았다.

가로의 길이는 위와 같이 선언/초기화 후에 정해줘도 된다.

1
2
3
arr[0] = new int[3];
arr[1] = new int[5];
arr[2] = new int[2];

이렇게 할 수 있으며, 가로의 길이가 일정하지 않은 배열을 Ragged Array(가변 배열)라고 한다.

Array Copy

얕은 복사

1
System.arraycopy(원본, 원본 어디서부터, 복사 담길 객체, 시작점, 길이);

깊은 복사

for문을 이용하여 값을 하나하나 넣어주면 된다.

For-each문

1
2
3
4
5
6
7
8
9
for(int e : arr) {
System.out.println(e);
}

/*
for(배열 arr의 모든 요소 각각을 e라 할 때 : arr이 반복의 대상) {
출력값
}
*/

for-each문은 파이썬에서

1
2
3
num = range(1,11)
for i in num:
print(i)

이렇게 쓴 것과 유사하다.

인덱스 접근이 어렵다는 단점이 있다.

Main method

1
public static void main(String[] args) { }

String[] args는 배열임을 알 수 있다.

args는 실행을 하면서 뒤에 붙는 문자열이 띄어쓰기를 기준으로 붙는다.

1
java Test AAA BBB CCC

Test 클래스를 실행하면서 뒤에 “AAA BBB CCC” 라는 문자열을 넣게 된다면

args[0] = “AAA”, args[1] = “BBB”, args[2] = “CCC” 이렇게 args는 값을 가지고 있게 된다.

Problem

다음은 배열을 선언하거나 초기화한 것이다. 잘못된 것을 고르고 그 이유를 설명하시오.

  1. int[] arr[];
  2. int[] arr = {1,2,3, };
  3. int[] arr = new int[5];
  4. int[] arr = new int[5]{1,2,3,4,5};
  5. int arr[5];
  6. int[] arr[] = new int[3] [];
1
2
3
4
5
6
7
int[] arr = new int[]{1,2,3,4,5}; //는 할 수 있다.
//괄호 {}안의 데이터의 개수에 따라 자동적으로 크기가 지정되기 때문

int arr[5]; //배열을 선얼할 때는 배열의 크기를 지정할 수 없다.

/* 답은 */
// 4, 5