반응형

Array constants can only be used in initializers

배열 상수는 초기화에 사용할 수 있습니다.

[배열 선언]

String[] arr = new String [3];  //배열 선언

arr = {"XX", "YY, "ZZ"};         //배열 초기값 

일반적으로 자바에서 선언 하는 방식입니다. 

String[] arry = {"XX", "YY, "ZZ"}; 

이 방식은 자바 표준 선언 방식이 아닙니다. 


이 코드는 다른 언어 (C언어) 등을 사용하는 사람들을 위해 호환성을 살린 부분 이라고 합니다. 

자바는 C언어처럼 포인터를 직접 사용하지 않기 때문에 객체 선언 new 를 사용하여 동적 메모리 할당 영역에 메모리를 잡는 방법을 사용합니다.

[정규식]

String[] arry = new String []{"XX", "YY", "ZZ"};

위와 같이 선언이 정규식 코드 방식입니다. 


String[] arry = {"XX", "YY, "ZZ"};  식이 비정규식인지를 확인 해 볼수 있는 코드 구분을 예로 들어 보겠습니다. 

IF구문을 이용해서 확인해 볼수 있습니다. 

int ifvalue = 1;

String[] arry = null;

if ( ifvalue ==0) { 

  arry = {"XX", "YY, "ZZ"}; 

}else{

 arry = {"XX1", "YY1, "ZZ1"}; 

}

이화 같이 선언을 해도 에러가 없을 것 같지만 바로 빨간 줄이 들어옵니다. 

요즘은 좋은 툴들이 많아서 이클립스 등의 툴로 위 와 같이 코드를 쓰면 바로 오류인걸 확인 할 수 있습니다. 


위코드는 다음과 같이 수정을 하면 됩니다.

int ifvalue = 1;

String[] arry = null;

if ( ifvalue ==0) { 

  arry = new String []{"XX", "YY, "ZZ"}; 

}else{

 arry = new String []{"XX1", "YY1, "ZZ1"}; 

}

new String[] 구분을 넣어 주면 바로 코드를 정상으로 인식합니다. 

이 간단한 코드로 어떤 표현이 정규식인지 바로 알 수 있습니다. 


반응형

+ Recent posts