List, Vector 또는 다른 것과 같은 일반 클래스를 사용하면 size()
함수를 사용하여 클래스의 길이를 반환하지만, 클래스 또는 기본 데이터 형식 배열의 현재 길이를 반환하는 public 멤버 길이를 가져옵니다.배열은 Java의 ByteCode에서 어떻게 작동합니까?
int a[] = new int[3];
a.length; // used without()
Vector<Integer> v = new Vector<Integer>();
v.length(); // used with()
왜 그렇습니까? 나는 배열 자체 클래스가 아니라는 뜻인가요? 따라서 클래스가 없으면 멤버를 식별 할 수 없습니다. 내가 백그라운드 (ByteCode)에서 어떻게 처리되는지 알 수 없다. 메모리의 배열은 배열의 첫 번째 요소에 대한 포인터와 함께 저장되며 인덱스 (i)는 메모리 포인터가 ArrayPointer + i*(size of DataType)
으로 이동한다는 것을 알고 있습니다.
이제 컴퓨터가 배열의 모든 요소를 통과하고 모든 요소를 계산한다고 말할 수 있지만 배열이 끝나는 위치와 다음 시작 위치를 컴퓨터가 어떻게 알 수 있습니까? 그리고 크기가 저장되는 배열의 '멤버 varaible'은 어디에서 오는가?
우리는 배열을 너무 자주 사용하지만 ByteCode의 Java 코드 뒤에 어떤 일이 일어나는지 거의 알지 못합니다. 어떻게 가능한지 설명해 주시겠습니까?
에
결과 배열은 다른 같은 목적으로한다. '길이'는 공개 필드입니다. –
이것은 좋은 설명이다. (https://www.artima.com/underthehood/objectsP.html). – Brian
http://stackoverflow.com/questions/5950155/how-is-length-implemented-in-java-arrays – assylias