Javaのプリミティブ型
table:プリミティブ型
型名 サイズ 説明 ラッパークラス リテラル表記
byte 8bit 符合付き整数。±128くらい java.lang.Byte ↓
short 16bit 符合付き整数。±32678くらい java.lang.Short ↓
int 32bit 符合付き整数。±2,147,483,648くらい java.lang.Integer 123, 0123, 0x123, 0b123
long 64bit 符合付き整数。でかい java.lang.Long 11234567890L
char 16bit Unicode文字。0〜65535 java.lang.Character 'c'
float 32bit 単精度浮動小数点 java.lang.Float 3.14F
double 64bit 倍精度浮動小数点 java.lang.Double 3.14D
boolean 1bit true/false java.lang.Boolean true, false
→ char 型とJavaのUnicode内部表現はUTF-16という話と関係あるのだろうか?🤔
大きなサイズへの変換は自動的・暗黙的に行われる。これをワイドニングという。
小さいサイズへの変換はデフォルトではエラーになる。明示的にキャストすれば可能で、これはナローイングという。
Java 7から数値リテラルの区切りにアンダースコアが使える。例: 1_000_000_000L
Java 7から二進数リテラル 0b01101101 が使える。
ラッパークラスについて
プリミティブ型→ラッパークラスへの変換は valueOf メソッドを使うと良い。
一部の範囲は事前に生成されたオブジェクトが使いまわされるためメモリ節約になるため
初期値の違いに注意する。プリミティブは0、ラッパークラスはnullとなる。
Java 5からラッパークラスの自動変換(オートボクシング、アンボクシング)が入った