2013-05-14 4 views
1

배열은 Java의 객체입니다. objectObject oriented languages에 작성해야한다고 생각합니다 (별개의 토론에서는 가질 수 없다면), 우리는 그것의 청사진 (클래스)이 필요합니다. 그러나 나는 확실하지 않거나 new operator이 사용될 때 객체가 배열을 위해 생성되는 클래스를 찾을 수 없다. java에 배열에 대한 클래스가 있다면, 계층 구조는 어떻게 생겼을까요?자바의 배열에 클래스가 있습니까?

클래스가없는 경우 개체는 어떻게 인스턴스화됩니까? 그리고 클래스가없는 객체 유형을 갖는 이유는 무엇입니까?

+0

ay89 : 배열이 java의 객체라는 것을 알고 있습니다. 그러나 클래스가없는 오브젝트 (있을 경우)가 있으면 이점이 있는지 알고 싶습니다. – Arun

+1

질문은 "배열이 Java의 객체라는 것을 알고 있습니다."라는 질문에 "배열은 Java의 객체입니까?"라는 질문에 중복됩니다. 들썩 들썩 한. – auselen

+0

auselen : 당신이 맞습니다 :) – Arun

답변

3

배열이 특별한 명령으로 가상 머신에 의해 만들어집니다 그래서 특별한 구조로 생각, newarray을했다. JVM Spec에서

:

3.9. 배열

Java 가상 시스템 배열도 객체입니다. 배열은 고유 한 명령어 세트를 사용하여 생성되고 조작됩니다. newarray 명령은 숫자 형식의 배열을 만드는 데 사용됩니다. 코드 :

또한 어레이의 클래스 계층 구조 JLS에서 자세히.

어레이 유형의 직접 수퍼 클래스는 Object입니다.

2

Object[]은 프리미티브와 마찬가지로 특별한 종류의 변수입니다. 그 유형은 이 아니라 Object[]입니다. 자바는 Ruby와 같이 "완전한"객체 지향 언어가 아닙니다. 그것은 배열과 프리미티브 같은 특별한 데이터 타입을 가지고있다.

1

배열은 java에서 기본이 아닙니다. 배열은 단일 유형의 고정 된 수의 값을 보유하는 컨테이너 객체입니다.

System.out.print (int []. class.toString());

배경에 콘크리트 class이 있고 다른 모든 배열 유형에도 동일하게 적용됩니다.

Find documentaion 상세히

1

예, Java에는 배열에 대한 클래스가 있습니다. http://docs.oracle.com/javase/specs/jls/se7/html/jls-10.html#jls-10.8 클래스 개체 (예 : 배열)

Class<int[]> cls = int[].class; 

이러한 클래스는 JVM에 의해 동적으로 생성됩니다.

int[] a = new long[1]; 

시간 오류를 컴파일 생산 원시 형의 배열들 사이에 계층 구조가 없습니다. 객체 배열 유형의 검색은 객체 유형과 동일합니다.

Object[] a = new String[1]; 
관련 문제