2017-02-07 11 views
-1

Integerクラスのドキュメントによれば:intはどのようにJavaで実装されていますか?

Integerクラスは、オブジェクト内のプリミティブ型intの値をラップします。 Integer型のオブジェクトには、型がintの単一のフィールドが含まれます。

intにドキュメント:デフォルト

、intデータ型は、32ビットが-2^31の最小値と2^31-1の最大値を有する2の補数整数を、署名されます。

また、本Answerによれば、Javaでは

、すべての変数はソースコードで宣言された型を有しています。参照型とプリミティブ型の2種類があります。参照型はオブジェクトへの参照です。プリミティブ型は直接値を含みます。

だから、私の質問は次のとおりです。intプリミティブ型は、Javaで実装されてどのように?クラスであるIntegerは、そのオブジェクトの作成を想像することができます。しかし、再びIntegerクラスはintを使用します。どのようにしてintがjavaに実装されているので、私たちはそれを使用することができ、すべての算術演算を実行することができます。これについての洞察は非常に役立つでしょう。

私は、しかし、私の質問への答えを見つけられませんでした、多くの既存の回答と記事が含まれていることを試してみました:

PS:

私の質問のいずれかの部分が正しくない/不明である場合は、親切に私がコメント欄で知らせてください。

+0

あなたの質問が何であるかは不明です。 「実装された」とはどういう意味ですか? – shmosel

+3

これはメモリ内に32個の連続したビットとして実装されています。どのような答えをお探しですか? –

+0

@shmoselつまり、 'Integer'を使用しているときは' Integer'クラスのオブジェクトです。同じ方法で、 'int'を使うときに何をアクセスしていますか?そしてそれはどのようにJava言語で定義されていますか? – OBX

答えて

6

intなどのプリミティブ型は、JavaコンパイラとJVMによって直接実装されます。彼らはクラスではありません。これらは値型であり、参照型ではありません。

コンパイラは、iload、iadd、およびistoreのようなバイトコードを発行しますが、メソッドディスパッチは必要ありません。

Integerはかなり普通のクラスです。インスタンスはヒープに割り当てられます。各インスタンスにはintの値が含まれています。

+1

これは、非jvm開発者が提供できる最も具体的なものだと思います。詳細については、jvm実装を掘り下げることをお勧めします。 open jdk、http://openjdk.java.net/ –

関連する問題