変数のデータ型の種類や使い方などを、学習し直した為、まとめていきたいと思います。
変数については以前簡単にまとめた記事がありますのでよろしければどうぞ。
変数の定義 基本的な使い方
基本データ型の種類
javaでデータ型には大きく分けて、基本データ型(プリミティブ型)
とオブジェクト参照型(リファレンス型)
の2種類があります。
オブジェクト参照型(リファレンス型)
には、String型
、文字列を扱えるデータ型です。
変数の定義 基本的な使い方こちらで、記事にしています。
基本データ型(プリミティブ型)
は、数字や文字などの、最も基本的なデータの種類を扱うことができ、8種類あります。
ビット数とはPCのメモリ上で確保される桁数のことです。
同じような表現でバイト数というのもあり、一般的に8ビット=1バイト
で扱われることが多いです。
データ型 | 種類 | データの幅 | データの表現範囲 |
---|---|---|---|
byte | 整数 | 8ビット | -128 ~ 127 |
short | 整数 | 16ビット | − 2の15乗~2の15乗 − 1(-32,768 ~ 32,767) |
int | 整数 | 32ビット | − 2の31乗~2の31乗 − 1(-2,147,483,648 ~ 2,147,483,647) |
long | 整数 | 64ビット | − 2の63乗~2の63乗 − 1(-9,223,372,036,854,775,808L ~9,223,372,036,854,775,807L) |
fioat | 浮動小数点数 | 32ビット | IEEE 754 規格の単精度浮動小数点数 |
double | 浮動小数点数 | 64ビット | IEEE 754 規格の単精度浮動小数点数 |
char | 文字 | 16ビット | Unicode規格の1文字(\u0000~\uFFFF) |
boolean | 論理値 | 1ビット | trueまたはfalse |
この中で小数を表すデータ型は、double型
とfloat型
です。
小数型はデータサイズが変わることによって、格納するデータの精度が異なります。
小数を表すとき、浮動小数点数
という数値が用いられます。
浮動小数点数
とは、計算で誤差が発生することを前提とした数値データのことです。
なぜ、計算に誤差が出るのかと言うと、プログラム内でデータの表現に2進数を利用することが原因です。2進数で小数を表現する場合、
<2進数> <10進数>
0.1 → 0.5
0.01 → 0.25
0.001 → 0.125
この様に半分になっていく数を足した結果として表します。
10進数で0.5などのピッタリ表せる数なら問題はないですが、10進数の0.01などを、2進数で表そうとすると、0.00000010100011110101110000101000111101・・・・
の様に無限ループが続いてしまいます。
これをそのまま保存できないので、途中で保存することになります。これが原因で計算に誤差を生むことがあります。
では、簡単に一つ一つ説明してみます。
byte
8bit(1byte)の符号付整数。
-128~127
8bitというのは8桁の2進数。
10000000~01111111(-2の7乗~2の7乗-1)
一番左の桁が符号を表します。1が-、0が+(符号付整数型すべてに共通)
short
16bitの符号付整数。
-32768~32767
1000000000000000~0111111111111111(-2の15乗~2の15乗-1)
int
Integer型
の省略表現。
32bitの符号付整数。
-2147483648~2147483647(約21億)
1000000000000000・・・(-2の31乗~2の31乗-1)
int型
の仲間にlong型
という型があります。
int型
とlong型
の違いは箱の大きさです。
long
64bitの符号付整数。
-約922京~約922京
1000000000000000・・・(-2の63乗~2の63乗-1)
int型を超えるlong型の範囲の数値を書くときは、数字の最後に「L」
または「l」
をつけないとint型と判断されてコンパイルエラーになります。
fioat
32bitの浮動小数点数。(小数点以下を含む数)
リテラル(プログラムのソースコードにおいて使用される。数値や文字列を直接に記述した定数のこと)
にfloat型の数値を書くときは、数字の後ろに「F」
または「f」
をつけます。
double
64bitの浮動小数点数。
整数型の値と比べ、値の桁数が多く小数も扱えるような数値です。
浮動小数点数型は割り算をした際、小数点以下に誤差が出でます。
BigDecimalクラスを使うと小数点以下の計算で正確な値が出せます。
double型の最大値は1.797693e+308
、最小値は2.225074e-308
です。
char
Unicode文字、1文字を扱うデータ型です。
簡単に言うと日本語の「あ」や「い」といった1文字を格納します。
4桁の16進数(0000~FFFF)に対応しています。
コメントをいただいたのでリンク貼ります!
補足
「あ」であれば「0x3042」といった風に、それぞれの文字に0~65535までの一意の番号が割り当てられます。
char 変数名 = '任意の1文字';
boolean
1bit、つまり一桁の0か1で、trueかfalseのどちらかの値を格納する。
まずtrue
か、false
を宣言します。
boolean a = true;
boolean a = false;
と一つ一つ簡単に説明していきました。
調べてみて、思ったことは、正直難しかったです。
これを、実務でパッと使いこなす、エンジニアに方々、本当に尊敬します。
私も経験を積んで、使いこなせる日が来るのだろうか。。。。
努力します!!!!
かなり、頭パンクしそうな感じで書いていったので、間違いや、変なところあったら指摘お願い致します。
ありがとうございました。