Javaをはじめ多くのプログラミング言語では、データを格納する際に「データ型」を指定します。
本記事では、Javaで利用するデータ型についての基礎知識を初心者向けに解説していきます。
Javaのデータ型について
Javaで利用するデータ型にはいくつもの種類があり、データ型によって扱えるデータ範囲が異なります。
まずは「基本型」と「参照型」と呼ばれる分類について確認しておきましょう。
基本型
基本型は「プリミティブ型」とも呼ばれ、Java言語標準として定義されたデータ型を指します。
基本型はさらに「整数型」「浮動小数点型」「文字型」「論理型」に分けることができ、それぞれ下記8つのデータ型が存在します。
- byte: 8bitの整数(-128~127)
- short: 16bitの整数(-32768~32767)
- int: 32bitの整数(-2147483648~2147483647)
- long: 64bitの整数(-9223372036854775808~9223372036854775807)
- float: 32bit単精度浮動小数点数
- double: 64bit単精度浮動小数点数
- char: UNICODE文字(u0000~uffff)
- boolean: 真偽型(trueまたはfalse)
参照型
Javaでは上述した基本型以外のデータ型を「参照型」として扱います。
参照型は「クラス型」「配列型」「インターフェース型」に分けられ、基本型が値そのものを保持するのに対し、参照型ではアドレス(データのある場所)を保持する点が異なります。
Javaでのデータ型定義方法
実際にJavaでプログラミングを行う際、どのようにデータ型を定義するのかについてご紹介していきます。
データ型の定義方法
Javaでデータ型を定義する際、下記のように宣言します。
データ型 変数名;
例えばデータ型を「int」、変数名を「i」と宣言する場合、下記の記述になります。
int i;
データ型定義サンプル
public class Main { public static void main(String[] args) { byte by1 = -128; byte by2= 127; short sh1 = -32768; short sh2 = 32767; int i1 = -2147483648; int i2 = 2147483647; long lo1 = -9223372036854775808L; long lo2 = 9223372036854775807L; float fl1 = 3.40E38F; float fl2 = 1.4E-45F; double do1 = 1.79E+308; double do2 = 4.94E-324; char ch1 = 'あ'; char ch2 = '川'; boolean bo1 = true; boolean bo2 = false; String str = "あいうえお"; System.out.println("by1:" + by1); System.out.println("by2:" + by2); System.out.println("sh1:" + sh1); System.out.println("sh2:" + sh2); System.out.println("i1:" + i1); System.out.println("i2:" + i2); System.out.println("lo1:" + lo1); System.out.println("lo2:" + lo2); System.out.println("fl1:" + fl1); System.out.println("fl2:" + fl2); System.out.println("do1:" + do1); System.out.println("do2:" + do2); System.out.println("ch1:" + ch1); System.out.println("ch2:" + ch2); System.out.println("bo1:" + bo1); System.out.println("bo2:" + bo2); System.out.println("str:" + str); } }
実行してみると下記のようにエラーなく出力されていることが確認出来ます。
by1:-128 by2:127 sh1:-32768 sh2:32767 i1:-2147483648 i2:2147483647 lo1:-9223372036854775808 lo2:9223372036854775807 fl1:3.4E38 fl2:1.4E-45 do1:1.79E308 do2:4.9E-324 ch1:あ ch2:川 bo1:true bo2:false str:あいうえお
Javaの基本型と参照型の違い
ここまででJavaのデータ型についてご紹介してきましたが、基本型と参照型のデータ保持方法の違いについてもサンプルで確認しておきましょう。
サンプルコード
public class Main { public static void main(String[] args) { int i = 123; premitive(i); System.out.println(i); String[] strArray = {"あいうえお", "かきくけこ", "さしすせそ"}; reference(strArray); System.out.println(strArray[2]); } public static void premitive(int i) { i = i + 100; System.out.println(i); } public static void reference(String[] strArray) { strArray[2] = "たちつてと"; System.out.println(strArray[2]); } }
実行した結果が下記となります。
223 123 たちつてと たちつてと
サンプル解説
4行目で基本型であるint型に対して初期値を設定し、5行目のメソッド呼び出しにより14,15行目の処理が実行されます。
処理が6行目に戻り、再度宣言した変数の値を出力した結果が実行結果の1行目と2行目です。
メソッドの引数として渡された値を14行目で変更していますが、呼び出し元のメソッド内の値は変更されていないことが分かります。
一方で、7行目で宣言した参照型であるString配列の場合、19行目で上書きして出力した値と呼び出し元である9行目で出力した値が、同一となっていることを確認出来ます。
これが基本型と参照型の違いで、参照型の場合呼び出し元と呼び出し先で同じアドレスのデータが参照されているため、呼び出し先のメソッドで更新した値が呼び出し元の変数にも影響を与える結果になっています。
さいごに: Javaのデータ型で扱える値の範囲と基本型・参照型の違いを抑えておこう
本記事では、Javaのデータ型に関する基本知識として、基本型・参照型の違いと各データ型が扱える範囲について初心者向けにご紹介してきました。
基本型と参照型の違いについて、最初はややこしいと感じる方も多いですが、Javaでプログラミングを行う上では必須知識の1つです。
今回ご紹介した各データ型と合わせて、細かく最大値・最小値までを覚える必要はありませんが、どういったデータ型を利用するのが適切かしっかりと判断しながら定義を行えるように学習を進めていきましょう。