【Java入門講座】
Javaで変数を使ってみよう!
byte・short・int・long・float・double・char・boolean・Stringを知ろう
投稿日 2020/10/14 更新日 2021/05/29
こんにちは。当サイトの管理者「元木皇天」です。
今回はJava入門講座ということで、プログラミングには欠かせない「変数」について学んでいきましょう。 また、最後に練習問題をつけておきますので是非挑んでみてください。
変数とは
変数を使ってみよう!と言いつつ、そもそも変数ってなんだろうと思う人がいるかもしれないし、
もしかしたら数学で出てくるあれか?と思う人もいるかもしれません。
言葉で表現すると少し難しいですが、プログラミングにおける変数とは、コンピュータが値を記憶しておき、
あとで使用することができるようにしておく機能と言えます。
参考文献:やさしいJava 第7版 / 高橋麻奈
・・・伝わったでしょうか?正直説明した僕自身何を言ってるのかわからなくなってきました...。 口で説明するより実際にやった方が早いと思います。でもその前に、Javaで扱う「リテラル」についてさらっと学びましょう。
リテラルとは
Javaにおける「リテラル」とは、文字や数値などの表記のことです。難しい言葉を使っていますが、要は人間界で使用する
数字や文字をまとめてそう呼んでいるだけです。Javaでは「数字」「文字」「文字列」の3種類のリテラルが存在します。
そして、それらを表現するにはそれぞれルールがあります。下記のコードを見てみてください。
参考文献:やさしいJava 第7版 / 高橋麻奈
//パッケージ名は省略 public class Main { public static void main(String[] args){ //数字リテラル System.out.println(100); //文字リテラル System.out.println('A'); //文字列リテラル System.out.println("AAAAAAAAA"); } }
「数字リテラル」はそのまま数字のことです。 「文字リテラル」は一文字だけのことを指し、「文字列リテラル」は複数の文字を指しています。
このコードを見てわかるように、リテラルごとに書き方が違います。まとめると以下のようになります。
数字リテラル => そのまま数字を入力する 文字リテラル => ''(シングルクォート)で括って入力する 文字列リテラル => ""(ダブルクォート)で括って入力する
これを踏まえた上で、変数について学んでいきましょう。
変数を体験しよう
変数を実際に感じてもらいたいので、まずは何も考えず以下のコードを書き写してみてください。 (クラス名はMainではなく他の名前でも大丈夫です)
//パッケージ名は省略 public class Main { public static void main(String[] args){ int xxx = 10; System.out.println(xxx); } }
「int」と「xxx」と「=」と「10」が新しく出てきましたね。では順番に解説していきます。
まず、最初に書いた「int」。これは変数の「型」というのを表しています。 書いた「型」によって、入れらる「値」が制限されます。
次の「xxx」は変数名を表しています。 変数名は任意で決められるので「xxx」出なくても「apple」や「DDDDDDD」のような感じで、なんでも大丈夫です。 一般的には入れる値を表すような英単語を選びます。
「=」は変数「xxx」に右の値の「10」を入れるよ、という意味です。
「10」は実際に変数に入れる値を表しています。
難しい言い方や言葉ばかりで分かりにくいと思いますが、例えて簡単にいうと下の図のような感じです。
このような感じで、「型」というものを指定することで入れられる「値」を制限できます。
今回の例だと「数字」しか入れられない型を設定しました。もし、数字以外のものを代入しようとすると エラーが起こってしまいますので注意してください。
以下エラーの例
//パッケージ名は省略 public class Main { public static void main(String[] args){ int xxx = "こんにちは"; System.out.println(xxx); } }
まとめると、変数の使用方法は以下のようになります。
型名 変数名 = 入れる値;
使い方がわかったところで次は、どんな「型」があって、どのような「値」が入れられるか学んでいきましょう。
型の種類
型は大きく分けて「数字」「真偽値」「文字」「文字列」の4つに分類でき、合計で9種類存在します。 それぞれ順番に解説していきます。
・数字を扱う型
Javaには数字を入れるための「型」が6種類あります。中でも「int型」「double型」 はとてもよく使うので覚えるようにしましょう。
6種類のうち4種類は「整数」を入れられる型、2種類は「小数」を入れられる型に分けられます。
整数を入れられる型には「byte」「short」「int」「long」の4種類があります。 入れられる数字は、型によっていくつまでと数字の範囲が決まっています。(以下の表を参照)
参考文献:やさしいJava 第7版 / 高橋麻奈また、小数を入れられる型には「float型」「double型」の2種類があります。 入れられる数字の範囲は以下の表を参照してください。
参考文献:やさしいJava 第7版 / 高橋麻奈単精度と倍精度の違いは、簡単に言ってしまえば表現できる小数の範囲が単精度より倍精度は多いですよ、という意味です。 詳しく知りたい方は「単精度 倍精度」などのキーワードで検索してみてください。
では、それぞれ実際に使用してみます。以下のコードを参考に書き写してみてください。
//パッケージ名は省略 public class Main { public static void main(String[] args){ //byte型の宣言 byte a = 10; //short型の宣言 short b = 20; //int型の宣言 int c = 30; //long型の宣言 long d = 40L; //float型の宣言 float e = 10.101f; //double型の宣言 double f = 20.202; } }
上記のように書きますが、「long型」と「float型」は数字の最後に「L」「f」をつけないといけないので注意してください。
また、格納できる範囲を超えた数字を入れるとエラーが出ますので気をつけてください。(以下はエラーの例)
//byteは127までしか入らないのでエラー byte num = 2000;
・真偽値を扱う型
プログラムをやっていないと聞き慣れないと思う「真偽値」という言葉。 これは言葉通り「真か偽か」ということです。 実際入力する値は「tureかfalse」になります。 真偽値は「boolean」という型名を使います。 では、実際に使ってみましょう。
boolean flag = true; System.out.println(flag);
まだやってませんが、実際はメソッドなどの戻り値に設定して、if文の条件式に使ったりすることが多いと思います。
・文字を扱う型
「文字」はリテラルの時も説明したように一文字のことを指します。 文字を扱うには「char型」という型名を使います。 では、実際に使ってみましょう。
char a = 'あ'; char b = '2'; System.out.println(a); System.out.println(b);
使う場面としては、文字列から順番に一文字ずつ取り出して、何かしらの処理をするとかですかね。 あまり使う場面はない気がします。(僕が無知なだけかもしれません)
・文字列を扱う型
「文字列」は「文字」とは違い、複数の文字からなるものを指します。 文字列を扱うには「String型」を使います。 詳しくは説明しませんが、今まで紹介したのが「プリミティブ型」というのに対し、Stringは「参照型」と言います。 Stringはなんか違う、くらいに頭の隅に置いといてください。 では、実際に使ってみましょう。
String str1 = "こんにちは"; String str2 = "100"; System.out.println(str1); System.out.println(str2);
とてもよく使うので必ず覚えてください。
まとめ
ここで学んだすべての型の使い方をまとめると以下の通りになります。
byte aaa = 10; short bbb = 20; int ccc = 30; long ddd = 40L; float eee = 10.0f; double fff = 20.0; boolean ggg = false; char hhh = 'A'; String iii = "こんにちは";
それぞれ状況に応じて使い分けられるように、覚えるようにしましょう。
ここまで変数について学んできました。少し難しかったでしょうか? 僕の説明がわかりにくかったら申し訳ないです…。 以下に練習問題を用意しているので確認も含め挑んでみてください。 次回は「演算子」について解説します!では、また次回お会いしましょう。
練習問題
問題は全部で2つです。答えは下のほうにあります。
問1:次の変数宣言のうち、エラーになってしまうものをすべて選んでください。
(1) float a = 200.0f; (2) int b = 25.0; (3) double c = 25; (4) byte d = 1000; (5) short e = 1000;
問2:次の変数宣言のうち、エラーになってしまうものをすべて選んでください。
(1) char a = A; (2) String b = A; (3) String c = "A"; (4) char d = "A";
解答
問1:答え (2)(4)
解説
(1)は正しいです。
(2)は整数しか入らない「int」に小数を入れてしまっているのでエラーです。
(3)は小数しか入らない「double」に整数を入れていますが、エラーにはなりません。
この変数宣言を行うと、入力した「25」が「25.0」という内容に自動で置き換わります。
(4)は「127」までしか入らない「byte」に、それを超える数字を入れようとしているため
エラーが起こります。
(5)は正しいです。
問2:答え (1)(2)(4)
解説
(1)(2)は共に、入れる値の宣言の仕方が間違っています。それぞれ「' '」「” ”」で括らないといけません。
正しくは(1)が「'A'」、(2)が「"A"」です。
(3)は正しいです。
(4)は文字しか入らない「char」に対し、文字列(" "で括った値)を入れようとしているのでエラーが起こります。
正しくは「'A'」です。