ホームページ  >  記事  >  Java  >  JavaのJVMのバイトコード構造は何ですか?

JavaのJVMのバイトコード構造は何ですか?

WBOY
WBOY転載
2023-04-22 15:55:08823ブラウズ

1. マジック ナンバー

すべての .class ファイルの最初の 4 バイトはマジック ナンバーであり、マジック ナンバーの固定値は 0xCAFEBABE です。マジック ナンバーはファイルの先頭に配置され、JVM はファイルの先頭に基づいて、そのファイルが .class ファイルである可能性が高いかどうかを判断できます。この場合、後続の操作は続行されます。

2. バージョン番号

バージョン番号はマジックナンバーの後の 4 バイトで、最初の 2 バイトは次のバージョン番号を示し、最後の 2 バイトは次のバージョン番号を示します。メジャーバージョン番号。

メジャー バージョン番号の後のバイトは、定数プールのエントリです。定数プールには、リテラルとシンボリック参照という 2 種類の定数が格納されます。リテラルはコード内で Final 定数値として宣言され、シンボルはカテゴリとインターフェイスのグローバル修飾名、フィールドの名前と指定子、メソッドの名前と指定子を参照します。定数プールは、定数プール カウンタと定数プール データ領域の 2 つの部分に分かれています。

3. 定数プール

定数プールの終わりの後の 2 バイトは、クラスがクラスであるかインターフェイスであるか、およびパブリック、抽象を使用するかどうかを記述します。 、ファイナルなどのデコレータ装飾。

4. アクセス フラグ

定数プールの末尾の 2 バイトは、クラスがクラスであるかインターフェイスであるか、およびパブリックによって変更されるかどうかを示します。 、アブストラクト、ファイナルなどタリスマンの修正。

5. 現在のクラス名

アクセス フラグの後の 2 バイトは、現在のクラスの完全修飾名を表します。この 2 バイトで保存された値が定数プールのインデックス値となり、このインデックス値に基づいて定数プール内でこのクラスの完全修飾名を見つけることができます。

6. 親クラス名

現在のクラス名の後の 2 バイトは、上記と同様に親クラスの完全修飾名を記述し、同様に保存されます。定数プールのインデックス値。

7. インターフェイス情報

親クラス名の後には、このクラスまたは親クラスによって実装されたインターフェイスの数を示す 2 バイトのインターフェイス カウンターが続きます。次の n バイトは、すべてのインターフェイス名の文字列定数のインデックス値です。

8. フィールド テーブル

フィールド テーブルは、クラス レベル変数やインスタンス変数など、クラスおよびインターフェイスで宣言された変数を記述するために使用されますが、メソッドは含まれません。内部宣言ローカル変数。

Java の基本データ型とは

Java の基本データ型は次のように分類されます:

1. 整数型。整数のデータ型を表すために使用されます。

2. 浮動小数点型、小数を表すために使用されるデータ型。

3. 文字型. 文字型のキーワードは「char」です。

4. ブール型は、論理値を表す基本的なデータ型です。

以上がJavaのJVMのバイトコード構造は何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はyisu.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。