[java] Java의 객체 인 배열

자바에서는 다음과 같은 배열을 선언 할 수 있습니다.

String[] array = new String[10]; 
int size = array.length; 

이것은 배열 자체가 객체라는 것을 의미합니까? C ++에서 배열은 포인터 일 뿐이며 메서드가 없기 때문입니다.



답변

예.

Java 언어 사양 섹션 4.3.1 은 다음으로 시작됩니다.

객체는 클래스 인스턴스 또는 배열입니다.


답변

예; Java 언어 사양 다음과 같이 씁니다 .

Java 프로그래밍 언어에서 배열은 객체 (§4.3.1)이며 동적으로 생성되며 Object 유형 (§4.3.2)의 변수에 할당 될 수 있습니다. Object 클래스의 모든 메서드는 배열에서 호출 될 수 있습니다.


답변

글쎄, 자바에게 물어 보자!

public class HelloWorld
{
  public static void main(String[] args)
  {
    System.out.println(args instanceof Object);
    int[] someIntegers = new int[] {42};
    System.out.println(someIntegers instanceof Object);
  }
}

산출:

true
true


답변

예, Java의 객체입니다.

또한 그렇게 할 때 array.length메서드를 호출하는 것이 아니라 배열의 length필드에 액세스하는 것 입니다. Arrays 클래스 에는 많은 정적 메서드가 있습니다.


답변

Java의 배열에는 객체와 공유하지 않는 고유 한 바이트 코드가 있다는 점에 유의해야합니다. 그것들은 확실히 객체이지만 낮은 수준에서 약간 다르게 처리됩니다.


답변

엄밀히 말하면 배열도 C ++의 객체라고 덧붙일 수 있지만 대답은 ‘예’라고 말하고 싶습니다. 현재 표준 (FDIS)의 §1.8 [intro.object]에서 :

객체 저장 영역이다.


답변

배열이 리플렉션 API- java.lang.reflect.Array에 표현되어 있음을 추가하고 싶습니다 .