☕
Java データ型
基本型
基本型は以下の8種類です。
扱えるリテラルがそれぞれ異なります。
型 | リテラル |
---|---|
byte |
8ビット整数 |
short |
16ビット整数 |
int |
32ビット整数 |
long |
64ビット整数 |
float |
32ビット単精度浮動小数点数 |
double |
64ビット倍精度浮動小数点数 |
char |
16ビットUnicode文字 |
boolean |
true , false
|
小さい型は大きい型に自動で変換されます。
大きい型を小さい型に変換するときは、キャストが必要です。
/*
byte → short → int → long → float → double
↑
char
*/
long l = 0; // int → long
float f = l; // long → float
double d = f; // float → double
int i = (int)0.0; // double → int → int
例外としてbyte
short
char
型の変数に整数リテラルを代入する場合、
型が扱える値の範囲内であればキャストは不要です。
/*
byte -128~127
short -32768~32767
char 0~65535
*/
byte b = 127; // int → byte
short s = 32767; // int → short
char c = 65535; // int → char
参照型
基本型以外のすべての型が該当します。
リテラルを格納する基本型の変数とは異なり、
参照型の変数はメモリ上に生成されたオブジェクトのアドレスを格納します。
String str1 = new String("A");
String str2 = new String("A");
System.out.println(str1 == str2); // falseが出力される
上記のコードでは同値のString
オブジェクトを生成しString
型の変数に代入していますが、
異なるオブジェクトは異なるアドレスを持つので同一性を比較するとfalse
が戻されます。
参照型の変数にはnull
を代入できます。
null
は、参照型の変数がアドレスを格納しないことを表すリテラルです。
String str = null;
基本型とは互換性がありません。
char c = "A"; // コンパイルエラー (String → char)
String str = 'A'; // コンパイルエラー (char → String)
ラッパークラス
リテラルをオブジェクトとして扱うためのクラス群であり、8種類存在します。
参照型なので、ラッパークラス型の変数はアドレスを格納しnull
を許容します。
基本型と互換性があり、自動で変換が行われます。
Integer num1 = 0; // int → Integer
int num2 = num1; // Integer → int
Discussion