2012-11-09 2 views
5

나는 쓸 때이배열이 Java로 초기화되는시기는 언제입니까?

String[] fruits = {"Apple", "Pear"}; 

나는 그것이 C에서 유사한 코드가 정확 위해 일어날 것 같은 컴파일시에 배열과 문자열이 생성되는 것을 기대? 배열과 그 내용은 일반적으로 컴파일 타임이나 런타임에 생성됩니까?

답변

8

배열 which are objects in Java이 생성됩니다. 이것은 런타임에만 발생할 수 있습니다.

많은 개체는 Java 프로그램에서 만들어지며 개체 생성은 VM 자체가 초기화 된 후에 만 ​​발생합니다. 하나의 정적 배열 초기화는 성능에 눈에 띄는 부담을주지 않을 것입니다.

당신이 배열을 변경하지 않고 당신이 많은 인스턴스가있는 경우, 정적 선언해야합니다 :

static String[] fruits = {"Apple", "Pear"}; 

참고 또한 정적으로 컴파일 된 배열이 될 수 있는지와 중요한 차이 : 자바 배열 변경할 수 있습니다. 길이를 변경할 수는 없지만 요소를 변경하거나 무효화 할 수 있습니다. 최종 정적 인 자바 배열은 실제로 상수가 아닙니다.

5

배열은 java의 특수한 객체입니다. 따라서 런타임에 생성됩니다.

으로 자바 프로그래밍 언어에서

Java Language Specification 당 배열 (§4.3.1), 동적으로 생성되는 개체가 있으며, Object 유형의 변수에 할당 할 수있다 (§4.3.2)

JLS 15.10은 배열 작성 표현식에 대한 자세한 정보를 제공합니다.