Javaのデータ型には、プリミティブ型と参照型の2つがあります。
データ型・・・データの種類を表すもの。コンピュータにデータの扱い方を指定するために記述する。
プリミティブ型
数値、真偽値、文字を扱うデータ型です。基本型とも呼ばれます。
整数型 | |
---|---|
byte | 8ビット整数(-128~127) |
short | 16ビット整数(-32768~32767) |
int | 32ビット整数(-2147483648~2147483647) |
long | 64ビット整数(-9223372036854775808~9223372036854775807) |
論理型 | |
---|---|
boolean | 真偽値(true/false) |
↑※C言語と違い、「bool」ではなく「boolean」であることに注意!
浮動小数点数型 | |
---|---|
float | 32ビット単精度浮動小数点数 |
double | 64ビット単精度浮動小数点数 |
文字型 | |
---|---|
char | 16ビットUnicode文字(u0000~uffff) |
参照型
参照型には、オブジェクト型・列挙型・配列型があります。具体的には、new演算子を用いてオブジェクトを生成してから使用するデータ型のことです。
プリミティブ型と参照型の違いは?
プリミティブ型がメモリ上の値そのものを扱っているのに対し、参照型はその値を格納しているアドレスを参照しています。
プリミティブ型の例
int x = 0;
int y = x; //xのメモリ上の値を代入している。
y = 1; //yのメモリ上の値が書き換えられる。
System.out.println(x);
System.out.println(y);
実行結果
0 //xは元のメモリ上の値のまま
1 //yは新しくメモリ上の値を更新されたため、1となっている
参照型の例
int[] x = new int[1];
x[0] = 0; //配列xの[0]に0(値そのもの)を代入
int[] y = x;
//↑参照型のオブジェクトを他の参照型に代入している場合、メモリ上のアドレスをコピーする
y[0] = 1; //配列yの[0]に1(値そのもの)を代入
System.out.println(x[0]);
System.out.println(y[0]);
実行結果
1 //int[] yはint[] xのアドレスをコピーした為、同じ値を参照することになる。(どちらか一方の値を変更すると、もう片方も変更される)
1
値を参照しているか、アドレスを参照しているかの違いによって上記の例のような結果になります。
まとめ
最後まで閲覧いただき有難うございます!何か間違いやお気づきの点がございましたらコメントお願いいたします!!