배열 리터럴

드코미·2025년 8월 15일
post-thumbnail

헷갈리는 부분에 대해서 다뤄보도록 하겠다.

✅ 옳은 문법

int[] pos = { y, x };     // OK: 변수 선언과 동시에 초기화
pos = new int[]{ y, x };  // OK: 대입은 생성식 필요

❌ 틀린 문법

static List<int[]> cores;

cores.add({ y, x });         // 컴파일 오류: array initializer is not allowed here

왜 틀렸을까? 그냥 {y,x}과 같이 배열 리터럴(array initializer)은, 배열 리터럴만 쓰고 싶다면 반드시 선언과 동시에 생성을 하는 형태에서만 가능하다.

// ok

int[] pos = { y, x };  // 선언부라 축약 리터럴 OK
cores.add(pos);

그러나, 위에 ❌ 틀린 예제에서는
배열 리터럴만 사용하고 있는데, 생성과 함께 사용하지는 않았다.

만약에 생성 없이, 배열 리터럴을 쓰고 싶다면, new라는 키워드와 함께 써야한다.
따라서

cores.add(new int[] {y, x});

이렇게 써야 옳은 형태이다.

profile
할 수 있다!!!

0개의 댓글