Java入門|データ型の基本

どんな値を入れるのかがわかると、変数のしくみがもっとはっきり見えてくる

変数について学ぶと、プログラムの中で値を記憶できることがわかってきます。けれども、変数はただ何でも自由に入れられる箱というわけではありません。実は、変数にはどのような種類の値を入れるのかを、あらかじめ決めておく必要があります。この「値の種類」を表しているのが、データ型、あるいは単に型です。

たとえば、整数を入れるための変数と、小数を入れるための変数とでは、役割が違います。さらに、はい・いいえのような二つの状態だけを表したい場合には、それに合った型を使います。このように、Javaでは値の性質に合わせて適切な型を選ぶことで、プログラムが正しく、そしてわかりやすく動くようになっています。

型の考え方は、最初は少し細かく感じるかもしれませんが、実はとても大切な基本です。どの型がどのような値を表すのか、どのくらいの範囲まで記憶できるのか、どのくらいのメモリを使うのかを理解しておくと、変数の使い方がぐっと明確になります。

ここでは、Javaの基本的な型をひとつずつ整理しながら、型とは何か、なぜ必要なのか、そしてサイズと値の範囲にどのような関係があるのかを、イメージしやすい形で丁寧に見ていきましょう。

型とは何か

型とは、変数にどのような種類の値を記憶させるのかを表すものです。

変数には値を入れることができますが、その値にはいくつかの種類があります。たとえば、整数、小数、文字、真偽値などです。Javaでは、こうした値の種類を区別して扱います。この値の種類のことを、データ型、または型と呼びます。

つまり、型はこの変数には何を入れてよいのかを決めるためのルールのようなものです。整数を入れる変数なのか、小数を入れる変数なのか、文字を入れる変数なのかを、先に決めておくことで、Javaは値を適切に管理できます。

この考え方は、日常の入れものにたとえるとわかりやすいです。たとえば、書類を入れる引き出しに飲み物を入れることは普通ありませんし、冷蔵庫に本をしまうことも普通はしません。それぞれの入れものには、向いている中身があります。変数も同じで、型によって入れられる値の種類が決まっています。

なぜ型を指定する必要があるのか

Javaでは、変数を使う前に、その変数がどの型の値を記憶するのかを決めておく必要があります。これはJavaが、値をあいまいに扱わず、はっきり区別して管理する言語だからです。

型を先に決めておくことで、Javaは次のようなことを正しく判断できます。

型を決めることでわかること内容
記憶できる値の種類整数なのか、小数なのか、文字なのかなど
記憶できる値の範囲どこまで大きい数、どこまで小さい数を扱えるか
必要なメモリ量その値を記憶するためにどのくらいの領域が必要か

このように、型は単なる分類ではなく、プログラムが値を正しく扱うための土台になっています。

もし型の区別がなければ、整数として扱うべき値と、小数として扱うべき値が混ざってしまい、処理のルールがあいまいになります。Javaではそうしたあいまいさを避けるために、変数ごとに型を決めるしくみになっています。

Javaの基本的な型

Javaには、基本的な型として次のようなものがあります。

名前記憶できる値の範囲
booleantrue または false
char2バイト文字(\u0000〜\uffff)
byte1バイト整数(-128〜127)
short2バイト整数(-32768〜32767)
int4バイト整数(-2147483648〜2147483647)
long8バイト整数(-9223372036854775808〜9223372036854775807)
float4バイト単精度浮動小数点数
double8バイト倍精度浮動小数点数

この表を見ると、Javaでは値の種類ごとに細かく型が用意されていることがわかります。特に整数だけでも byte、short、int、long という複数の型があります。これは、記憶できる値の範囲や必要なメモリ量が異なるためです。

また、数値以外にも boolean や char のような型があることにも注目したいところです。Javaは、数だけでなく、状態や文字も型として区別して扱います。

boolean型は true と false を表す型

boolean型は、とてもシンプルな型です。記憶できる値は true または false の二つだけです。

この型は、条件の成り立ちを表したいときによく使われます。たとえば、ある条件を満たしているか、処理が成功したか、スイッチがオンかオフか、といった二択の状態を表すのに向いています。

数値を記憶する型とは違い、boolean型は大きさや範囲を比べるものではありません。数を保存するためではなく、判断の結果や状態を記録するための型です。

そのため、型を選ぶときには、値が数値なのか、それとも true または false で表すような状態なのかを区別して考えることが大切です。

char型は1文字を表す型

char型は、1文字を記憶するための型です。

ここで大切なのは、char型は文字列全体ではなく、あくまで1文字を表す型だという点です。たとえば、1つの記号、1つの英字、1つの日本語文字など、1文字単位のデータを扱うイメージです。

char型は、文字そのものを扱うための型なので、整数や小数を扱う型とは目的が異なります。数字の見た目をしている文字と、計算に使う数値は別のものとして考える必要があります。たとえば、見た目が 3 でも、文字としての 3 と数値としての 3 は役割が違います。この感覚は、今後Javaを学んでいく中でとても重要になります。

整数型は値の大きさに応じて使い分ける

Javaの整数型には、byte、short、int、long があります。どれも整数を記憶する型ですが、違いは主に記憶できる値の範囲とサイズです。

サイズ記憶できる範囲の特徴
byte1バイトとても小さい整数範囲
short2バイトbyteより広い整数範囲
int4バイト一般的によく使う整数範囲
long8バイト非常に大きな整数範囲

整数型は、サイズが大きくなるほど、より大きな数やより小さな負の数まで扱えるようになります。これは、使えるメモリの量が増えるためです。

初心者のうちは、整数にはいくつか種類があり、それぞれ扱える範囲が違う、とつかんでおくことが大切です。どれも整数であることに変わりはありませんが、すべて同じではないという点が重要です。

short型を例に型の意味を考える

short型は、-32768〜32767 までの範囲の整数を記憶できる型です。

つまり、short型の変数には、この範囲に入る整数を1つ記憶させることができます。たとえば 3 のような整数であれば、この範囲に収まっているため記憶できます。

一方で、short型は整数専用の型なので、小数点を含む 3.14 のような値を入れることはできません。ここが型の大切なところです。同じ数のように見えても、整数と小数はJavaでは別の種類の値として扱われます。そのため、整数を入れる型に小数を入れることはできません。

このように、型は何を入れられるかを決めるだけでなく、何を入れられないかも明確にしています。これが、Javaの厳密さであり、正確な処理につながるポイントです。

図でイメージする型

この図では、short型の変数が、決められた範囲の整数を入れるための箱として表現されています。上から 3 が入っているので、3 は short型で扱える値だとわかります。

ここで特に見ておきたいのは、short型の変数には何でも入るわけではない、という点です。入れられるのは -32768〜32767 の範囲の整数だけです。つまり、型が決まると、その変数が受け入れられる値の範囲や種類も自動的に決まることになります。

小数を扱う型は float と double

小数を扱うための型として、Javaには float と double があります。float は 4バイト単精度浮動小数点数、double は 8バイト倍精度浮動小数点数を扱うための型です。

ここではまず、小数を表すための型が整数型とは別に用意されていることを押さえておくのが大切です。たとえば 3.14 のような値は、小数点以下をもっているため、short や int のような整数型には入りません。このような値を扱うには、float や double のような小数用の型を使う必要があります。

また、float と double はどちらも小数を扱いますが、サイズが異なります。一般的には、サイズの大きい double のほうが、より広い範囲やより細かな表現に対応できます。double型の値は int型の値より多くのメモリを必要とします。

ここからわかるのは、型を選ぶときには、整数か小数かだけでなく、どのくらいの大きさや精度が必要なのかも関係してくるということです。

型のサイズとは何か

表にある 1バイト、2バイト、4バイト、8バイト という数字は、型のサイズを表しています。これは、その型の値を記憶するために、どのくらいのメモリが必要なのかを示しています。

型のサイズは、値の表現力と深く関係しています。一般的に、サイズが大きいほど、表現できる値の範囲は広くなります。たとえば、1バイトより2バイト、2バイトより4バイトのほうが、多くの情報を持つことができます。そのため、より大きな数を表せるようになります。

この考え方を整理すると、次のようになります。

サイズ特徴
小さい使用するメモリは少ないが、表せる範囲は狭い
大きい使用するメモリは多いが、表せる範囲は広い

この関係を理解しておくと、なぜ整数型が複数あるのか、なぜ小数型にも種類があるのかが見えてきます。Javaは、必要な表現に応じて適切なサイズの型を使えるようにしているのです。

サイズが大きいほど表せる範囲は広くなる

一般的にサイズが大きいほど、表すことができる値の範囲は広くなります。これは型を学ぶうえでとても大事なポイントです。

たとえば、byte は 1バイトなので表せる整数の範囲は小さめですが、short は 2バイトなのでその範囲が広くなります。さらに int は 4バイト、long は 8バイトと、サイズが増えるにつれて扱える値も大きくなっていきます。

この考え方は、小数にもあてはまります。double は float より大きなサイズを使うため、より広い範囲の値を扱いやすくなります。

ただし、サイズが大きければ必ずそれだけでよい、という単純な話でもありません。型は、必要な値の種類や範囲に合わせて選ぶことが大切です。大きな型は便利ですが、そのぶん多くのメモリを使います。プログラムでは、何をどのように扱いたいのかを考えて、適切な型を選ぶことが基本になります。

型は変数の性格を決める

型をひとことで表すなら、その変数の性格を決めるものといえます。

その変数は整数を入れるためのものなのか、小数を入れるためのものなのか、1文字を入れるためのものなのか、あるいは true と false を入れるためのものなのか。型を決めることで、その変数の役割がはっきりします。

この役割がはっきりしているからこそ、Javaはミスを見つけやすく、コードも読みやすくなります。たとえば、小数を入れるべき変数なのに整数型を指定していたら、型の考え方をもとにそのズレに気づけます。逆に、型を意識せずに書いてしまうと、どんな値を扱いたいのかがあいまいになってしまいます。

変数を見るときには、その名前だけでなく、その型にも注目することが大切です。名前は何のための変数かを表し、型はどんな種類の値を入れるのかを表します。この二つがそろって、変数の意味が明確になります。

型を学ぶと変数の理解が深まる

変数は値を入れておく箱のようなもの、と考えるとイメージしやすいですが、型を学ぶことで、その箱には入れられるものに決まりがあることがわかります。この気づきはとても大切です。

何でも入る箱ではなく、整数専用の箱、小数専用の箱、文字専用の箱、真偽値専用の箱のように、それぞれ役割が決まっています。だからこそ、Javaは値を整理して安全に扱えるのです。

型の考え方がわかってくると、これから学ぶ変数の宣言、代入、初期化といった内容も理解しやすくなります。なぜ変数を使う前に型を書くのか、なぜ入れられる値に制限があるのか、といったことが自然につながって見えてきます。

データ型は、一見すると表や数字が多くて少し覚えにくそうに見えるかもしれませんが、基本はとても素直です。どんな値を扱いたいのかに合わせて、適切な型を選ぶ。この感覚をつかむことが、Javaの基礎をしっかり固めることにつながります。