【初心者用】Javaのデータ型についてまとめてみた
公開日: 2022/8/31
更新日: 2022/8/31
他のプログラミング言語においてもそうですが、Javaにはいろんな種類のデータ型があります。
ここでは、
・そもそもデータ型とは何なのか、
・Javaにはどんなデータ型があるのか、どんな特徴があるのか
について説明していきたいと思います。
ここでは、
・そもそもデータ型とは何なのか、
・Javaにはどんなデータ型があるのか、どんな特徴があるのか
について説明していきたいと思います。
1. データ型って何?
Javaを含めたほとんどのプログラミング言語において、処理するデータをやり取りする際、そのデータを格納するのに変数を用います。
これを、「箱」に例えてみます。
物(データ)を箱(変数)に入れて、取り出して中身を見たり、入れ替えたりしながら、処理を行っていくわけです。
そして、今回の主題となっている「データ型」とは、ざっくり言ってしまうと「箱のカタチや材質」のようなものです。
箱のカタチによって入るモノ(データ)の種類や、容量(表現範囲)は異なります。
このくらいのざっくりした認識を頭に入れつつ、次項以降を見ていきましょう。
これを、「箱」に例えてみます。
物(データ)を箱(変数)に入れて、取り出して中身を見たり、入れ替えたりしながら、処理を行っていくわけです。
そして、今回の主題となっている「データ型」とは、ざっくり言ってしまうと「箱のカタチや材質」のようなものです。
箱のカタチによって入るモノ(データ)の種類や、容量(表現範囲)は異なります。
このくらいのざっくりした認識を頭に入れつつ、次項以降を見ていきましょう。
2. データ型の種類
データ型は、大別して「基本型(プリミティブ型)」と「参照型」の2つに分類できます。
それぞれについてざっくり説明していきます。
プリミティブ型
プリミティブ型は、「primitive(原始的な)」という名の通り、Javaの基本的な型となります。8種類ありますが、大別すると4つに分けられます。
ここでは、それぞれの特徴とビット数(データの大きさ)について紹介していきます。
論理型
真か偽かを示すだけの型。booleanのみ。
・boolean 1ビット
整数型
小数点の無い数値。4種類あり、それぞれ表現可能範囲があります。
ビット数が多いほど範囲が広いですが、基本的にはint型が使われます。
(基本は±(2のビット数乗)/2、正はそこから-1)
・byte 8ビット
・short 16ビット
・int 32ビット
・long 64ビット
浮動小数点型
小数点のある数値。
2種類あり、整数型と同じく、ビット数が多いほど、表現範囲が広いです。
・float 32ビット
・double 64ビット
文字列型
その名の通り、文字列の型。charのみ。
・char
16ビット。Unicode文字列。単一の文字のみ表現可能。
※Javaの基本型では、複数の文字からなる文字列は表現不可。
文字列については、後述する参照型(String型等)を用いる。
参照型
参照型は、ざっくりいうと、「プリミティブ型以外のデータ型」です。例として挙げると、StringやInteger、配列やクラス等があります。
なので、いっぱいありすぎて一つ一つ説明していくときりがなくなるので、簡単な特徴だけ説明します。
プリミティブ型と参照型は、根本的に異なる箇所があります。
それは「データの持ち方」です。
プリミティブ型は「値そのもの」を持っているのに対して、参照型は「値が格納されている場所」を持ちます。
値を、直接持っているわけではないのです。
例として、以下のようなプログラムを書いてみます。
- public class Sample {
- public static void main(String[] args) {
- int x[] = {1,2,3,4};
- System.out.println(x);
- }
- }
参照型である配列を宣言し、それを表示させるプログラムです。
3. データ型の使い分け
前項でも説明したように、データ型は様々なものがあります。
型が色々あれば、扱えるデータの種類や、範囲も異なります。
これを、現実で「モノを梱包する」という行為に例えてみましょう。
小さい箱に、大きいものは入りません。
小さい物しか入れないのに、過剰に大きい箱を用意するのは無駄です。
固体であれば段ボールに入りますが、液体であれば瓶やペットボトル、缶などの容器が欲しいです。
かといって液体用の容器に固体を押し込めるのもおかしいでしょう。
このような、「どんな箱を用意すればいいのか?」という問題は、プログラミング上でも同じく発生します。
まず、プログラム上で変数(箱)を用いる際、Javaでは最初にデータ型を宣言する必要があります。
まず、想像しやすいように、データの例として「文字列」と「数値」を挙げてみましょう。
他にも色々ありますが、とりあえずこの2種類だけで考えてみます。
・まず、文字列と数値を同じ箱に入れることはできません(数値を文字列に入れることはできますが、この場合は数字も文字も等しく文字列として扱われます)。
・数字の場合、桁数や、小数点の有無でデータ型は変わります。
・数字を足したり、引いたりと演算を行う際、文字列型のデータは、例え中身が数字のみであっても使うことはできません。
「文字列」と「数値」だけをとってみても、ざっと見ただけで検討すべきことはたくさんあります。
また、変数を宣言することで、処理を行っているコンピュータ内で変数を保持するためのメモリ領域が確保されます。
この確保されるメモリ領域は、データ型によって変わりますし、確保されるメモリ領域が大きいほど、処理に使われるメモリ領域は小さくなり、処理は遅くなります。
メモリの大きさが気にならないほど余裕があるのであれば、データ型を気にする必要はありませんが、メモリが限られていたり、一度に大量のデータを処理する必要がるのであれば、必要な分だけで済むデータ型を考える必要が出てきます。
よって、処理速度という面においても、データ型については理解を深め、処理内容に応じて使い分けていくことが重要となるでしょう。
型が色々あれば、扱えるデータの種類や、範囲も異なります。
これを、現実で「モノを梱包する」という行為に例えてみましょう。
小さい箱に、大きいものは入りません。
小さい物しか入れないのに、過剰に大きい箱を用意するのは無駄です。
固体であれば段ボールに入りますが、液体であれば瓶やペットボトル、缶などの容器が欲しいです。
かといって液体用の容器に固体を押し込めるのもおかしいでしょう。
このような、「どんな箱を用意すればいいのか?」という問題は、プログラミング上でも同じく発生します。
まず、プログラム上で変数(箱)を用いる際、Javaでは最初にデータ型を宣言する必要があります。
まず、想像しやすいように、データの例として「文字列」と「数値」を挙げてみましょう。
他にも色々ありますが、とりあえずこの2種類だけで考えてみます。
・まず、文字列と数値を同じ箱に入れることはできません(数値を文字列に入れることはできますが、この場合は数字も文字も等しく文字列として扱われます)。
・数字の場合、桁数や、小数点の有無でデータ型は変わります。
・数字を足したり、引いたりと演算を行う際、文字列型のデータは、例え中身が数字のみであっても使うことはできません。
「文字列」と「数値」だけをとってみても、ざっと見ただけで検討すべきことはたくさんあります。
また、変数を宣言することで、処理を行っているコンピュータ内で変数を保持するためのメモリ領域が確保されます。
この確保されるメモリ領域は、データ型によって変わりますし、確保されるメモリ領域が大きいほど、処理に使われるメモリ領域は小さくなり、処理は遅くなります。
メモリの大きさが気にならないほど余裕があるのであれば、データ型を気にする必要はありませんが、メモリが限られていたり、一度に大量のデータを処理する必要がるのであれば、必要な分だけで済むデータ型を考える必要が出てきます。
よって、処理速度という面においても、データ型については理解を深め、処理内容に応じて使い分けていくことが重要となるでしょう。