変数の中身が何なのか明記しないと、翻訳家が困ってしまいます。
変数とは?
「変数」というと、数学における$x, y$といったものを思い浮かぶと思います。プログラミングにおける変数も似たようなものです。
int x = 100;
double y = 10.2;
System.out.printf("%.2f", x*y); // 1020.00が出力
こんな感じで、変数x, y
を「宣言」して、中に数値を「代入」でき、変数同士の演算によって中身の数値同士の演算を実行することが出来ます。
型とは?
上のプログラムにおいて、x, y
の前についているint
とかdouble
とかは何のことでしょうか?これが「型」というものです。例えばint
はinteger(整数)の略で、整数の「型」を表します。
変数x, y
を定めただけでは、その中に整数が入っているのか、小数が入っているのか、はたまた文字列が入っているのか、コンパイラには知る由もありません。これを「x
の中身には整数が入ってますよ~」とコンパイラに教えてあげるのが「型」の役割です。
一番最初に変数を「宣言」する際には
(型の名前) (宣言する変数名) = (変数の中身)
といった形をとります。2回目以降にこの変数へ値を「代入」する場合は、改めて型を明記する必要はありません。その変数の型は最初に明記されているためです。
int x = 100; // 型をつけて宣言&代入
x = 200; // 宣言済み変数への代入なら型必要なし
System.out.printf("%d", x); // 200が出力
いくつかの型
Javaにデフォルトで存在している型はたくさんありますが、最初に覚えておくべき型は以下の5つだと考えています。
型 | 型の内容 |
---|---|
int | 整数 |
double | 小数 |
String | 文字列 |
boolean | 真理値(true/false) |
void | (関数において)返り値がないこと |
boolean
は#4の条件分岐、void
は#5の関数においてそれぞれ扱うため、存在を知っておくだけで大丈夫です。今回はint, double, String
の3つについて扱いましょう。
int, double
は上で扱った整数や小数に、String
は前回扱った"Hello World!"
といった、"
(ダブルクォーテーション)で囲まれた文字列値に対応した型です。
変数同士の計算
それでは変数同士の計算を行っていきましょう。section2/Test.java
を参照してください。
public class Test {
public static void main(String[] args) {
// 整数(int), 小数(double), 文字列(String)の変数を定義します。
int integer = 1;
double doubleNum1 = 9.64;
double doubleNum2 = 2.38;
String str = "Hello World!";
// 整数の足し算
int newInteger = integer + 4;
System.out.printf("integer + 4 = %d\n", newInteger);
// 小数の計算
double newDoubleNum1 = doubleNum1 * 3.2;
System.out.printf("doubleNum1 × 3.2 = %.3f\n", newDoubleNum1);
double newDoubleNum2 = doubleNum1 / doubleNum2;
System.out.printf("doubleNum1 / doubleNum2 = %.2f\n", newDoubleNum2);
// 文字列のトリミング
String substr = str.substring(3, 9);
System.out.printf("substr: %s\n", substr);
}
}
上のプログラムでは、int, double, String
の3つの型について、変数を作成してそれぞれの間で計算を行っています。詳しい説明は省きますが、変数の中身をちょこちょこ変えていって様子を観察してみましょう。
教えてない物を黙って使っている件について
気づいた方もいると思いますが、ここまで全然説明していない内容をいくつか黙ってコードの中で使っています。例えばSystem.out.printf
などは説明していないですね。
基本的にエンジニアが他人のコードを見る時、こういうことは日常茶飯事(のはず)です。そのたびにコピペしてネットで調べて、その一行の処理を理解し、そこからコード全体の処理の理解を進めていく、というのがエンジニアの常になってくると思います。この慣習に今から慣れていくためにも、過剰な説明は省き、各回のテーマに注目して説明していきたいと思います。説明書くのが面倒くさいというわけではないです。
とはいえさすがに不親切なので、1つだけ説明したいと思います。
System.out.printf
これは前回扱ったSystem.out.println
やSystem.out.print
などの仲間で、f
はformatの頭文字を表しています。「指定子」と呼ばれる記号を用いて、文字列を装飾して表示する関数です。これを使うと、上でやっているように文字列の中に変数の中身を表示させたり、何行かにわたって表示する際、縦の列を揃えて表示をしたりすることが出来ます。
詳しくはこちらへ!
課題
人間の身長と体重を表す変数(double)を定義して、その人のBMIを計算し、出力してください。
想定出力は下記のようになります。
解答例はsection2/Main.java
を参照してください。
まとめ
今回は変数の型をいくつか学び、変数の中身をコロコロ変えながら出力の変化を観察しました。だんだんプログラミングしている感が出てきたのではないでしょうか。
次回はfor, while
を用いた繰り返し処理を学んでいきます。