Java class 파일 형식의 특수 문자열동력 노드 자바 대학 정리

class 파일 의 특수 문자열
먼저,이른바 특수 문자열 이 class 파일 의 상수 탱크 에 나타 나 는 것 을 설명 합 니 다.순서에 따라 점진 적 이 고 경 계 를 줄 이 는 원칙 에 따라 먼저 class 파일 의 특수 문자열 을 상세 하 게 소개 한 다음 에 고 개 를 돌려 상수 탱크 를 계속 설명 합 니 다. 이제 우 리 는 특수 문자열 에 중점 을 둘 것 이다.특수 문자열 은 세 가지 가 있 습 니 다.클래스 의 전체 제한 이름,필드 와 방법의 설명자,특수 한 방법의 방법 이름 입 니 다.다음은 이 세 가지 특수 문자열 을 소개 합 니 다.
(1)류 의 전 한정 명
상수 탱크 에서 하나의 유형의 이름 은 우리 가 원본 파일 에서 본 것 처럼 원본 파일 에서 사용 하 는 가방 이름 에 클래스 이름 을 추가 하 는 형식 도 아 닙 니 다.원본 파일 의 전체 제한 이름과 class 파일 의 전체 제한 이름 은 같은 개념 이 아 닙 니 다.원본 파일 의 새로운 이름 은 패키지 이름 에 클래스 이름 을 추가 하고 패키지 이름 의 각 부분 간 에 패키지 이름과 클래스 이름 사이 에 점 호 를 사용 하여 분할 합 니 다.Object 클래스 와 같이 원본 파일 의 전체 제한 이름 은 java.lang.Object 입 니 다.클 라 스 파일 의 전체 제한 이름 은 점 호 를'/'로 바 꾸 는 것 입 니 다.예 를 들 어 Object 류 가 class 파일 에 있 는 모든 제한 이름 은 자바/lang/Object 입 니 다.만약 에 독자 가 이전에 class 파일 형식 을 접 한 적 이 없다 면 class 파일 형식의 초보 자 입 니 다.여기 서 전체 이름 이 class 파일 에서 어떻게 사용 되 는 지 알 필요 가 없습니다.원본 파일 의 한 가지 이름 만 알 아야 합 니 다.class 파일 에서 전체 이름 으로 표현 합 니 다. 
(2)설명자
우 리 는 하나의 클래스 에서 몇 개의 필드 와 방법 이 있 을 수 있다 는 것 을 알 고 있다.이런 필드 와 방법 은 원본 파일 에서 어떻게 표현 하 는 지 우 리 는 더 이상 익숙 할 수 없다.이제 클 라 스 파일 형식 을 배 워 야 하 는 이상 한 필드 나 방법 이 클 라 스 파일 에서 어떻게 표현 되 는 지 물 어 봐 야 합 니 다.본 논문 에서 우 리 는 방법 과 필드 가 class 파일 에서 의 설명 을 토론 할 것 이다.방법 과 필드 의 설명 자 는 방법 과 필드 의 모든 정 보 를 묘사 하지 않 습 니 다.설명 자 는 간단 한 문자열 일 뿐 입 니 다. 
설명 자 를 설명 하기 전에 먼저 문 제 를 설명해 야 합 니 다.그것 은 모든 유형 이 설명 자 에 해당 하 는 문자 나 문자열 로 대응 하 는 것 입 니 다.예 를 들 어 모든 기본 데이터 유형 은 대문자 로 대응 하고 void 도 대문자 로 대응 합 니 다.다음 표 는 void 와 기본 데이터 형식 이 설명자 에서 의 대응 입 니 다.
기본 데이터 형식 과 void 형식
형식의 대응 문자
byte
B
char
C
double
D
float
F
int
I
long
J
short
S
boolean
Z
void
V
기본적으로 형식의 첫 글자 가 대문자 로 바 뀌 어 대응 합 니 다.그 중에서 log 와 boolean 은 특례 입 니 다.log 형식 은 설명자 에서 대응 하 는 문 자 는 J 이 고 boolean 형식 은 설명자 에서 대응 하 는 문 자 는 Z 입 니 다. 
기본 형식 과 void 는 설명자 에 대문자 가 있 습 니 다.그러면 인용 유형(클래스 와 인터페이스,매 거 진)은 설명자 에 어떻게 대응 합 니까?형식 에 대응 하 는 문자열 을 참조 합 니 다(주의,참조 형식 은 설명 문자 에 문자열 을 사용 합 니 다).이 문자열 의 형식 은:
1. “L” + 형식의 전체 제한 이름 + “;”  
이 세 부분 사이 에는 빈 칸 이 없고 긴밀 하 게 배열 되 어 있 음 을 주의 하 세 요.예 를 들 어 Object 가 설명자 에 대응 하 는 문자열 은:Ljava/lang/Object 입 니 다. ; ArrayList 설명자 에 대응 하 는 문자열 은:Ljava/lang/Array List 입 니 다. ; 사용자 정의 형식 com.example.Person 이 설명자 에 대응 하 는 문자열 은 Lcom/example/Person 입 니 다.
우 리 는 자바 언어 에서 배열 도 하나의 유형 이 고 한 배열 의 요소 유형 과 그의 차원 이 그의 유형 을 결정 한 다 는 것 을 알 고 있다.예 를 들 어 int[]a 성명 에서 변수 a 의 유형 은 int[]이 고 int[][]b 성명 에서 변수 b 의 유형 은 int[][]이 며 Object[]c 성명 에서 변수 c 의 유형 은 Object[]이다.배열 이 형식 인 이상 설명 문자 에 도 배열 형식의 대응 문자열 이 있어 야 합 니 다.class 파일 의 설명자 에서 배열 의 형식 은 각 차원 에서 하나의[대표,배열 형식 전체 형식의 대응 문자열 형식 은 다음 과 같 습 니 다.
1.몇 개"["  +  배열 의 요소 형식 에 대응 하 는 문자열   
다음은 예 를 들 어 이름 을 말씀 드 리 겠 습 니 다. int[]형식의 대응 문자열 은:[I 。 int[][]형식의 대응 문자열 은:[I 입 니 다. Object[]형식의 대응 문자열 은:[Ljava/lang/Object;입 니 다. Object[][][]형식의 대응 문자열 은:[[[Ljava/lang/Object;입 니 다.
각 유형의 설명자 에 대응 하 는 문자열 을 소개 하고 필드 와 방법 에 대한 설명 자 를 시작 합 니 다. 
필드 의 설명 자 는 필드 의 형식 에 대응 하 는 문자 나 문자열 입 니 다.예 를 들 어 int i 에서 필드 i 의 설명 자 는 I 입 니 다.Object o 에서 필드 o 의 설명 자 는 Ljava/lang/Object 입 니 다. 。 double[][]d 에서 필드 d 의 설명 자 는[[D 입 니 다. 
방법의 설명 자 는 모든 매개 변수의 유형 목록 과 방법 반환 값 을 포함 하여 비교적 복잡 하 다.그것 의 형식 은 다음 과 같다.
1.(매개 변수 1 유형 매개 변수 2 유형 매개 변수 3 유형 ...)반환 값 형식  
그 중에서 매개 변수의 유형 이 든 반환 값 형식 이 든 모두 대응 하 는 문자 와 대응 하 는 문자열 을 사용 하여 표시 하고 매개 변수 목록 은 작은 괄호 로 묶 으 며 각 매개 변수 유형 간 에 빈 칸 이 없고 매개 변수 목록 과 반환 값 유형 간 에 빈 칸 이 없습니다. 
다음은 예 를 들 어 설명 한다.
방법 설명자
방법 성명
()I
int getSize()
()Ljava/lang/String;
String toString()
([Ljava/lang/String;)V
void main(String[] args)
()V
void wait()
(JI)V
void wait(long timeout, int nanos)
(ZILjava/lang/String;II)Z
boolean regionMatches(boolean ignoreCase, int toOffset, String other, int ooffset, int len)
([BII)I
int read(byte[] b, int off, int len )
()[[Ljava/lang/Object;
Object[][] getObjectArray()
(3)특별한 방법의 방법 명
우선 여기 서 의 특수 한 방법 은 유형의 구조 방법 과 유형 초기 화 방법 을 가리킨다.구조 방법 은 더 이상 말 할 필요 가 없다.유형의 초기 화 방법 은 소스 코드 에 대응 하 는 것 이 정적 초기 화 블록 이다.즉,정적 초기 화 블록 은 class 파일 에서 하나의 방법 으로 표현 되 는데 이 방법 은 똑 같이 방법 설명자 와 방법 명 이 있 습 니 다. 
클래스 구조 방법의 방법 명 은 문자열를 사용 하고 정적 초기 화 방법의 방법 명 은 문자열 을 사용 합 니 다. 표시.이 두 가지 특수 한 방법 을 제외 하고 다른 일반적인 방법의 방법 명 은 원본 파일 의 방법 명 과 같다.
총결산
class 파일 의 특수 문자열 은 클래스(인터페이스,매 거 진 포함)의 전체 제한 이름,필드 의 설명자 와 방법 에 대한 설명 자 를 포함 합 니 다.그 중에서 클래스 의 전체 제한 이름 은 이해 하기 쉽 고 필드 와 방법의 설명 자 는 모든 유형의 맵 과 관련 되 기 때문에 약간 복잡 할 수 있 습 니 다.설명 자 를 이해 하려 면 각 유형(8 가지 기본 데이터 형식,클래스 유형,배열 형식 과 void 포함)이 설명 자 에 대응 하 는 설명 문자 나 문자열 을 숙지 해 야 합 니 다. 
그리고 주의해 야 할 것 은 방법 과 필드 의 설명자 에는 필드 이름과 방법 명 이 포함 되 지 않 습 니 다.필드 설명자 에는 필드 형식 만 포함 되 고 방법 설명자 에는 매개 변수 목록 과 반환 값 형식 만 포함 되 어 있 습 니 다.

좋은 웹페이지 즐겨찾기