Javaで必須のデータ型とは?Javaで利用されるデータ型の種類と使い方

- システム
エンジニア - Javaのデータ型にはどのようなものがあるのでしょうか。
- プロジェクト
マネージャー - 基本データ型と参照型があります。
Javaで必須のデータ型とは?
Javaのデータ型には基本データ型と参照型があります。データ型はプログラミング言語を利用するうえで欠かせない要素の一つで、設定した変数においてどのようなデータを扱うかを指定します。
変数は数学の方程式等で使用されるxやyという文字と同様に考えることができるもので、ある事柄の範囲を文字で仮に表したものです。ただしJavaで以下のように記述した場合、「x」がイコール「1」という意味ではなく、「x」に「1」を代入するという意味になります。
1
2
|
int x = 1;
|
上記のコードでxの前に記述した「int」が基本データ型の一つとなります。
基本データ型は別名プリミティブ型とも呼ばれ、変数に入れられた値自体の型を直接指定するものです。対して参照型は、値が格納された場所に対して指定するデータ型です。
参照型はプログラミングに慣れていないとイメージしづらいところがありますが、例えばイヌ、ネコ、サル、ライオンというデータを扱いたい場合、それぞれ0、1、2、3と採番された場所に格納することになります。イヌというデータを呼び出す時は「0」を参照します。
参照型を含めてしまうとJavaにおけるクラスについての説明が必要となってくるため、今回は基本データ型に絞って紹介していきます。今回紹介する基本データ型以外が全て参照型となるため、まずはJavaの基本データ型をしっかり押さえておくことをおすすめします。
Javaで利用されるデータ型の種類と使い方について
Javaのデータ型は、必ず変数の前に記述します。またJavaで扱う基本データ型は全部で8種類で、それぞれ用途や値の取り扱い可能範囲が異なります。それぞれの基本データ型の意味と、コーディング例を紹介します。
なおJavaの基本データ型は、指定されたデータ型が必要とするbit数分のデータ領域を確保し、その領域内に値を保存するという仕組みです。bit数については、これから挙げる基本データ型の分別にも役立つ概念なので、意識しながら見ていきましょう。
コーディング例に関しては、インポートやクラスの記述を省いているので、あらかじめご注意ください。
boolean(1bit)
true、falseという二択の論理値のみを格納できるデータ型です。
コンピュータが直接理解できるものは0か1のみです。日本語やグラフィック等も突き詰めれば全て0か1で解釈されています。この0や1が最小単位の1bitです。trueは「1」、falseは「0」でそれぞれ表すことができるので領域は1bitで済みます。
なおbooleanは、必ず初期値としてtrue、falseのいずれかを格納しておく必要があります。
以下はbooleanを使ったコーディング例です。
1
2
3
4
5
6
7
8
9
10
|
public static void main (String [ ] args)throws Exception{
boolean isAnimal = false;
if(isAnimal){
System.out.println("それは動物です。");
}
else{
System.out.println("それは動物ではないです。");
}
}
|
上記では、isAnimalに「false」が格納されているため、elseの方の処理に進み、「それは動物ではないです。」が出力されます。
byte(8bit)、short(16bit)、int(32bit)、long(64bit)
いずれも整数値を扱う際の基本データ型です。byteは-128〜127、shortは-32768〜32767、intは-2147483648〜2147483647、longは-9223372036854775808〜9223372036854775807という範囲の整数をそれぞれ扱えます。
各データ型が保持できる数値の範囲が、与えられたbit数で扱える数値の範囲となっています。
各データ型の範囲を超えてしまうようなプログラミングを組んだ場合、単純にエラーが発生するわけではなく、オーバーフローという状態が発生し、意図せぬ結果が出力されます。
以下にオーバーフローが発生する例と、コンパイルの時点でエラーとなる例を記述します。
1
2
3
4
5
6
7
8
|
[オーバーフロー発生例]
public static void main (String [ ] args){
int i = 1;
for(; i >= 0; i++){
}
System.out.println(i);
}
|
プログラム上に上限を定めることなく繰り返した結果、intが扱える2147483647を超え、オーバーフローを起こして「-2147483648」という全く意図せぬ値を出力します。
1
2
3
4
5
6
|
[コンパイルエラー発生例]
public static void main (String [ ] args){
int i = 2147483648;
System.out.println(i);
}
|
はじめから取り扱えない値を変数に渡しているため、コンパイル時点でエラーとなります。
float(32bit)、double(64bit)
byte等と同様に数値を格納するデータ型ですが、floatとdoubleは小数点のみ扱います。
なおそれぞれ扱える範囲は、floatが負の値で-3.4028235E+38〜-1.401298E-45、正の値で1.401298E-45〜3.4028235E+38です。
doubleは負の値で-1.79769313486231570E+308〜-4.94065645841246544E-324、正の値で4.94065645841246544E-324〜1.79769313486231570E+308です。
以上のようにfloat、doubleで扱える小数点は、計算時に発生の可能性がある誤差を含んだ浮動小数点というものです。doubleの方がより精度が高いデータ型であるため、誤差が少なく精度を求められるプログラミングではdoubleを利用します。
またdouble型は変数に対してそのまま小数点を代入できますが、float型の場合は小数点の後に「F」が必要となります。
以下に各データ型の記述例を紹介します。
1
2
3
4
5
6
|
double num = 5.5;
float num = 5.5F;
または
float num = (float)5.5;
|
char(16bit)
charはUnicodeで定義された文字を扱うデータ型ですが、整数型として分類される場合もあります。
コンピュータは世界中で使われているため、日本であれば日本語、英語圏であれば英語といったように各国の言語を解釈する必要があります。それら世界中で使われる文字をコンピュータが認識できるコードに置き換えた共通の規格がUnicodeです。
char型に文字を格納する場合は、日本語等の文字を「'(シングルクォーテーション)」で囲む必要があります。またUnicodeの規格で割り当てられている文字コードを「”」の間に入力することでも表現可能です。
以下にcharの記述例を紹介します。
1
2
3
4
5
6
7
8
|
public static void main (String [ ] args){
char c = 'あ';
System.out.println(c)
char cc = '0x3042';
System.out.println(cc)
}
|
上記はいずれも「あ」が出力されます。「0x3042」は「あ」の文字コードであるためです。全ての文字コードは16進数の表記となっていますが、10進数に換えると0〜65635の整数です。そのため整数のデータ型と捉えることもできます。
- システム
エンジニア - Javaのデータ型についてよく理解できました。
- プロジェクト
マネージャー - データ型はJava以外のプログラミング言語でも役立つ基礎知識なので、この機会に習得しておくと良いでしょう。
Javaで的確なデータ型を指定してコーディングを行おう!
昨今は大容量のコンピュータもそれほどコストを割かずに利用できるようになってきているため、一昔前に比べると、システム稼働時のリソース使用状況に対してシビアになる場面も少なくなってきています。
それでも必要以上のリソース使用は、システムの不具合や負荷を発生させるきっかけになる可能性があります。データ型を適切に使い分けることは、システムエラーを未然に防ぐことはもちろん、リソースの削減に繋げることもできるため重要なポイントとなります。
データ型はJava以外のプログラミング言語でも役に立つ基礎知識となるため、プログラミングの学習を始める際には、ぜひデータ型の知識を定着させておくことをおすすめします。
FEnetJava・Javaコラムは株式会社オープンアップシステムが運営しています。
株式会社オープンアップシステムはこんな会社です
秋葉原オフィスには株式会社オープンアップシステムをはじめグループのIT企業が集結!
数多くのエンジニアが集まります。

-
スマホアプリから業務系システムまで
スマホアプリから業務系システムまで開発案件多数。システムエンジニア・プログラマーとしての多彩なキャリアパスがあります。
-
充実した研修制度
毎年、IT技術のトレンドや社員の要望に合わせて、カリキュラムを刷新し展開しています。社内講師の丁寧なサポートを受けながら、自分のペースで学ぶことができます。
-
資格取得を応援
スキルアップしたい社員を応援するために資格取得一時金制度を設けています。受験料(実費)と合わせて資格レベルに合わせた最大10万円の一時金も支給しています。
-
東証プライム上場企業グループ
オープンアップシステムは東証プライム上場「株式会社オープンアップグループ」のグループ企業です。
安定した経営基盤とグループ間のスムーズな連携でコロナ禍でも安定した雇用を実現させています。
株式会社オープンアップシステムに興味を持った方へ
株式会社オープンアップシステムでは、開発系エンジニア・プログラマを募集しています。
年収をアップしたい!スキルアップしたい!大手の上流案件にチャレンジしたい!
まずは話だけでも聞いてみたい場合もOK。お気軽にご登録ください。


Java新着案件New Job
-
官公庁向け業務システム開発/Java/東京都千代田区/【WEB面談可】/テレワーク
月給39万~44万円東京都千代田区(永田町駅) -
販売管理システム開発/Java/東京都中央区/【WEB面談可】/テレワーク
月給49万~55万円東京都中央区(京橋駅) -
生命保険会社向けシステム開発/Java/東京都千代田区/【WEB面談可】/テレワーク
月給42万~48万円東京都千代田区(大手町駅) -
社会保険システムのパッケージ開発/Java/東京都港区/【WEB面談可】/テレワーク
月給42万~48万円東京都港区(新橋駅) -
金融機関向けシステム更改/Java/東京都江東区/【WEB面談可】/テレワーク
月給46万~51万円東京都江東区(豊洲駅) -
大手通信会社者向けWebシステム改修/Java/東京都港区/【WEB面談可】/テレワーク
月給42万~48万円東京都港区(品川駅)