なんとなくわかるJava入門#3 基本データ型編
こんにちは。
今回はデータ型編です。今回の目標は「データにはいろいろな種類があり、コンピュータ上では区別されることを理解すること」です。
イメージしてみよう
今回は、まず最初にこれから学習する内容について、身近な例でイメージしてもらおうと思います。ちょっと頭で考えてみて下さい。
まず、「3+2」を計算して下さい。
次に、「1300005 + 700005」を計算して下さい。
次に、「どんぐりころころ」という曲を頭の中で再生して下さい。
最後に、「スキップしている子供」をイメージして下さい。
それぞれ、数字、音、映像といった全く違うもので、イメージの仕方もそれぞれ違ったと思います。数字も、桁数が多いと通常モードではなく、本気モードで頭を使ったと思います。
コンピュータの世界で考えてみよう
Javaでも計算で扱うデータにはいろいろな種類があります。
具体的には、256などの数値、”A”などの文字があります。
さらに、数値にはいろいろな種類があり、「整数」や、整数部と小数部からなる「実数」などがあります。
整数にも種類があり、扱える値の範囲によって、「整数」や「長整数」などが定義されています。先ほどの「イメージしてみよう」で、「3+2」と「1300005+700005」は頭の使い方が異なっていました。これと同じように、コンピュータでも用途に応じて区別して扱うことで、効率よく計算をすることができます。
このように明確に区別され扱われ方が異なるデータの種類のことを「データ型」と呼びます。データ型の中でも、整数、実数、長整数 などといった基本的なものを「基本データ型」と言います。
Javaで扱われる型と意味を簡単にまとめると次のとおりです(一部)
型 | 意味 |
---|---|
int型 | 整数 |
long型 | 桁の多い整数 |
double型 | 実数 |
boolean型 | 真偽値(trueとfalse) |
char型 | 1文字 |
String型 | 文字列 |
最初からたくさん覚えるのもたいへんなので、とりあえず太字のものだけ覚えていれば十分です。あとはすぐに慣れて覚えられます。
これらの値を代入する変数もその型専用のものを使います。つまり、int型用の変数にはint型の値(整数値)のみを代入することができ、double型用の変数にはdouble型の値(実数値)のみを代入することができます。1桁しか数字を扱わないのに、10000000000桁の数字を扱うのと同じように記憶したり、計算していたら無駄ですよね?(つねに脳みそを本気モードにするイメージ)したがって、効率よく記録したり、計算したりするために、コンピュータはデータを種類によって区別して扱います。
ここまでのまとめ
- 値の種類ごとに区別して扱われる。この種類を型と呼ぶ
- 値を代入する変数もその型専用のものを使う
プログラムを書いてみる
では、プログラムを作ってみましょう。
1) Eclipse を起動し、次の名前のプロジェクトとJavaファイルを作って下さい。
やり方が分からない人は、前回の記事を参照してください。
プロジェクト名:PrimitiveDataType
クラス名:PrimitiveDataTypeMain
2) 以下のコードを書いてください。
public class PrimitiveDataTypeMain {
public static void main(String[] args) {
int i;
double d;
long l;
boolean b;
char c;
String s;
i = 1;
l = 1L;
d = 1.0;
b = true;
b = false;
c = 'A';
s = "ABC";
}
}
プログラムを観察してみる
先ほど書いたプログラムを観察してみましょう。
1) 「int i; ~ String s;」について、
int i; は整数値のための変数を宣言しています。int と先頭に書くことで、int型(整数)用であることを表し、i という名前の変数を宣言しています。以降も、それぞれの型の値のための変数を宣言しています。
2) i = 1; について、
前回学習したように、int型(整数)用の変数に対して、1を代入しています。
基本的には、ある型の値は、その型用の変数にしか代入ができません。
この「1」といった、ある型の値を表現するものをリテラルと呼びます。
3) l = 1L; について、
先ほどと、ほぼ同じように見えますが、「L」という文字が付いています。これは何でしょうか?
「L」というのは、これはlong型のリテラルであるということを表しています。「1」という数字だけをみても、これが、整数(int型)としての1なのか、大きな数も扱える整数(long型)としての1なのかは分かりません。コンピュータは、型が違えば扱い方が変わります。例えば、先ほど述べたようにint型の値はint型の変数にしか代入できません。しかし、「1」としか書かれておらず、int型かlong型かが判断できないと、どの型の変数に代入できるか分かりません。したがって、long型の値には末尾に「L」を付けることで判別できるようにします。
4) d = 1.0; について、
1.0というような、小数点が付いた数はdouble型のリテラルとなります。ちなみに、int型とlong型のように、実数にも種類があります。もうひとつの実数の型としてfloat型というものがあり、この型のリテラルは、1.0Fのように表記します。
5) b = true; と b = false; について、
trueは、4文字の文字列ではなく、それ自体でひとつの値を表しています。boolean型は、真偽値といって、true(真)かfalse(偽)しかない二値のデータの型です。活用例は今後色々と学習することになるので、今はそういったものがある程度に覚えておきましょう。
6) c = 'A'; と s = "ABC"; について、
シングルクォート( ’ ) で囲まれたものは「文字」、ダブルクォート( " )で囲まれたものは「文字列」のリテラルです。ここで文字というのは「1文字」という意味なので、
'ABC' という風には書けません。
ここまでをまとめは次のとおりです。
- 型名 名前; で、ある型の変数を宣言する。
- 「1」のようなある型の値を表したものをリテラルと呼ぶ。
- 1はint型、1Lはdouble型のリテラル。
- boolean型というのは、trueかfalseのいずれかのみをとる値の型。
- シングルクォートで囲むと1文字、ダブルクォートで囲むと文字列を表す。
こまけぇハナシ
ここで説明した基本データ型は、全体の一部です。ほかにも、byte、short、floatなどがあります。
整数値の先頭に0xをつけると16進数、0をつけると8進数、0bをつけると2進数になります。つまり、10進数の100は、16進数では0x64、8進数では0144、2進数では0b1100100になります。
また、整数値の途中に「_」を入れることができます。例えば、100_000_000のように、読みやすくすることができます。
終わりに
これで基本データ型編については終わりです。いろいろ言いましたが、データにはいろいろな種類があって、これらを区別してそれぞれいろいろな扱い方ができるってことを分かっていれば、ここらはすぐに慣れると思います。といことで、次回は演算編です。
ほんじゃ、また。
励みになるので、良ければ下の☆ボタン、読者になるボタンを押していって下さい。