変数を利用したい時にデータ型が必要になります。このデータ型について確認してみましょう。
データ型
データ型とは、そのデータの種類を表すものです。
「1」と記述されていた場合、これはどのような「1」と見ることが出来るでしょうか。
単純に考えると数字の「1」ですが、文字の「1」とも考えられます。
人間は「1」の前後を読み取る事で数字なのか文字なのかを理解する事が出来ます。
「1 + 1」と記述されていたら数字、「第1章」と記述されていたら文字であると判断しています。
ではコンピュータはどのように「1」を数字なのか文字なのかを判断するのでしょうか。
人間のように前後を読み取って理解はしてくれません。
コンピュータに、”これは数字の「1」です”、”文字の「1」です”と教えてあげないといけないのです。
よってデータを入れる箱、つまり変数にも、どのような種類のデータを入れるのかを指定する必要があるのです。
このようなデータの種類のことをデータ型といいます。
Java のデータ型
Javaのデータ型には基本データ型とクラス型(参照型)があります。
ここでは基本データ型について見てみましょう。
【基本データ型】
符号付き整数と浮動小数点数
コンピュータが数をあらわすやり方には次の2つの方法があります。
符号付き整数(固定小数点数)
これは、あらかじめ小数点の位置を決めておく方法です。
浮動小数点数
これは、小数点の位置を可変にしておく方法です。
コンピュータの中では、符号付き整数(固定小数点数)で整数をあらわし、浮動小数点数で実数(小数を含む数)をあらわします。
つまりJavaでは、
「byte」「short」「int」「long」は符号付き整数(固定小数点数)で、
「float」「double」は浮動小数点数
であらわします。
符号付き整数(固定小数点数)
整数をあらわすときには「最下位ビットの右側を小数点とする」と決めてしまえば、小数部分に割くビット数は0となり、整数だけを扱うことになります。
この整数部のサイズが
データ型 | サイズ |
---|---|
byte | 8ビット |
short | 16ビット |
int | 32ビット |
long | 64ビット |
となり、扱えるデータの範囲が変わってくることになります。
浮動小数点数
浮動小数点数は、指数表記を用いて数値を扱う表現方法です。
また、Java(コンピュータ)ではIEEE754という浮動小数点算術のルールに則って決められています。
コンピュータで扱うのは2進数ですので、基数は「2」で固定になります。
なので、残りの可変部分(符号、仮数、指数)の値をビットに割り当てて、数を表現します。
また、IEEE754では
符号 | 0:正 1:負 |
指数部 | 2を基数として「+127」する(バイアス127) |
仮数部 | 仮数-1 の2進小数で表す(1.xxx の小数部) |
となります。
指数部に出てくる「バイアス127」ですが、下記のように実際の指数に127を加えて表現します。
バイアスすることで、負の数を含む表現が正の数だけであらわせるため、大小関係がわかりやすくなります。
float と double それぞれのデータサイズは下記の通りです。
float | double | |
---|---|---|
符号 | 1ビット | 1ビット |
指数部 | 8ビット | 11ビット |
仮数部 | 23ビット | 52ビット |
--- | --- | --- |
合計 | 32ビット | 64ビット |
では、float を例に実際の値を見てみましょう。
今回は「0.375」を浮動小数点(float)であらわします。そのために、まずは正規化を行います。
これを「符号」「指数部」「仮数部」で考えると
となります。
よって最終的に
となります。
文字
これは 'a' や 'あ' などの1文字を表すデータ型です。「'」(シングルクォート)で1文字を括ったのが文字です。
Java では文字表現に”Unicode”を採用しています。
論理値
boolean 型と呼ばれ、二者択一のデータを表す型です。
削除しても良いか否か、ある値より上か下か、などのように2 つの値のどちらかしか存在しない情報を表す際に利用されます。
値としてtrue、false を持ちます。true の意味として真、false の意味として偽ですが、あくまでboolean 型を表現する1 つの言い方ですので、真、偽という意味以外での利用をしてもまったく問題ありません。
まとめ
整数と小数の扱いについては、コンピュータでのデータの表し方まで解説しました。
ただ、コーディングするときには、そこまで意識することはまれですので、まずは基本データ型の種類を覚えるようにしましょう。
参考図書