Java基本データ型面接
2654 ワード
Javaの基本データ型は8つあり、boolean、byte、short、int、long、char、float、doubleである.各データ型には、対応するオブジェクトクラスがあります.1、まず基本データ型が占有するバイト数について説明する. 単純タイプ
boolean
byte
char
short
int
long
float
double
void
占有率(1バイト8ビット)
1
8
16
16
32
64
32
64
パッケージクラス
Boolean
Byte
Character
Short
Int
Long
Float
Double
Void
上記は仮想マシンのビット数に関係なく、doubleとlong型は、演算時に2つの32ビットに分解して演算するので、マルチスレッドの場合は原子性を保証できません.*2、解体と梱包の問題を紹介します.Javaでは、基本データ型とそれに対応するオブジェクトクラスとの間でダンプとダンプが変換され、以下のように定義されています.ダンプ:基本タイプを対応する参照タイプで包装し、オブジェクトの性質を持つようにダンプします.ダンプとは逆に、参照タイプのオブジェクトを値タイプのデータに簡略化します.例えば、Integer i=100;JDK 5以降の仮想機会は自動的にInteger.valueOf(100)を呼び出してIntegerオブジェクトに変換します.コードは以下の通りです.
上記の説明では、次のコードを参照してください.
では、結果は何でしょうか.答えは最初のtrue、2番目のfalseです.実は上の箱詰めの過程の説明を通じて、皆さんもこの問題を理解することができて、f 1は直接1つを作成して、f 2を作成する時、先にメモリの値が100に等しいかどうかを検査して、結果はあって、そこで直接f 2をメモリの中で100に指向して、だからf 1、f 2は指向する同じメモリで、等号の判断を行う時、引用のタイプなので、引用が同じかどうかを比較して、f 3、f 4は実際には2つの新しいオブジェクトを直接作成しているので、参照は異なるに違いありません. 3.次に、梱包時にメモリから直接参照を返す場合の をまとめる.
を選択します.
表示範囲
メモリから直接参照を返す
Integer
[−231,231−1]
[-128,127]
Byte
[-128,127]
[-128,127]
Short
[−215,215−1]
[-128,127]
Char
[0,216−1]
[0,127]
Long
[-2^{63},2^{63}-1]
[-128,127]
Float
32ビット
メモリから返されるものは存在しません.直接新規作成されます.
Double
64ビット
メモリからの戻りは存在せず、直接新規作成されます.
boolean
byte
char
short
int
long
float
double
void
占有率(1バイト8ビット)
1
8
16
16
32
64
32
64
パッケージクラス
Boolean
Byte
Character
Short
Int
Long
Float
Double
Void
上記は仮想マシンのビット数に関係なく、doubleとlong型は、演算時に2つの32ビットに分解して演算するので、マルチスレッドの場合は原子性を保証できません.*2、解体と梱包の問題を紹介します.Javaでは、基本データ型とそれに対応するオブジェクトクラスとの間でダンプとダンプが変換され、以下のように定義されています.ダンプ:基本タイプを対応する参照タイプで包装し、オブジェクトの性質を持つようにダンプします.ダンプとは逆に、参照タイプのオブジェクトを値タイプのデータに簡略化します.例えば、Integer i=100;JDK 5以降の仮想機会は自動的にInteger.valueOf(100)を呼び出してIntegerオブジェクトに変換します.コードは以下の通りです.
public static Integer valueOf(int i) {
if (i >= IntegerCache.low && i <= IntegerCache.high)
return IntegerCache.cache[i + (-IntegerCache.low)];
return new Integer(i);
}
-128-127 , , , 。 -128-127 , Integer 。
上記の説明では、次のコードを参照してください.
Integer f1 = 100, f2 = 100, f3 = 150, f4 = 150;
System.out.println(f1 == f2);
System.out.println(f3 == f4);
では、結果は何でしょうか.答えは最初のtrue、2番目のfalseです.実は上の箱詰めの過程の説明を通じて、皆さんもこの問題を理解することができて、f 1は直接1つを作成して、f 2を作成する時、先にメモリの値が100に等しいかどうかを検査して、結果はあって、そこで直接f 2をメモリの中で100に指向して、だからf 1、f 2は指向する同じメモリで、等号の判断を行う時、引用のタイプなので、引用が同じかどうかを比較して、f 3、f 4は実際には2つの新しいオブジェクトを直接作成しているので、参照は異なるに違いありません.
を選択します.
表示範囲
メモリから直接参照を返す
Integer
[−231,231−1]
[-128,127]
Byte
[-128,127]
[-128,127]
Short
[−215,215−1]
[-128,127]
Char
[0,216−1]
[0,127]
Long
[-2^{63},2^{63}-1]
[-128,127]
Float
32ビット
メモリから返されるものは存在しません.直接新規作成されます.
Double
64ビット
メモリからの戻りは存在せず、直接新規作成されます.