基本データ型と参照型の違い
データ型
変数を用意する場合、どのような値を格納するのかデータ型で指定します。
Java言語のデータ型には大きく分けて基本データ型と参照型があります。
基本データ型
基本データ型には以下の8種類があります。
データ型 | 意味 | サイズ |
---|---|---|
byte | 符号つき整数 | 8ビット |
short | 符号つき整数 | 16ビット |
int | 符号つき整数 | 32ビット |
long | 符号つき整数 | 64ビット |
float | 浮動小数点数 | 32ビット |
double | 浮動小数点数 | 64ビット |
char | Unicodeで表現できる1文字 | 16ビット |
boolean | 真偽値 | 1ビット |
参照型
参照型は以上8つの以外の型です。
Stringや配列を指します。
基本データ型と参照型の違い
基本データ型は変数に直接、値が代入されます。
一方、参照型はメモリ上のアドレスが代入されます。
基本データ型での動作
次のサンプルコードを見てください
int a = 1;
int b = a;
a = 0;
console.log(a); // 結果 0
console.log(b); // 結果 1
変数aと変数bにはそれぞれ直接値が代入されます。
よって、変数aに0を代入しても変数bの値には何の影響もありません。
参照型での動作
では、参照型の場合どのような動作をするのでしょうか?
int[] a = {1, 2, 3}
int[] b = a;
a[0] = 0;
console.log(a); // 結果 {0, 2, 3}
console.log(b); // 結果 {0, 2, 3}
これが参照型の特徴です。
配列bには{1, 2, 3}ではなく、配列aが参照しているメモリ上のアドレスが格納されます。
よって、配列aの変更は配列bにも影響します。
同じように、配列bの変更も配列aに影響します。
基本型と参照型ではこのような違いがあることを覚えておきましょう。
まとめ
・基本データ型は8種類存在する(byte,short,int,long,float,double,char)。
・String型は上記の8種類意外の型。
・基本データ型は変数に直接、値が代入される。
・参照型は変数にアドレスが代入される。