変数を使おう①
足し算や掛け算などの計算ができるプログラムを作成しながら、変数について学んでいきましょう。
変数
演算結果の出力
まずは、単純な結果を表示するプログラムを作ります。以下のコードを記述してみましょう。
//Sum1.java
//2つの整数値の和を表示
class Sum1{
public static void main(String[] args){
System.out.println(50 + 100);
}
}
数値の出力
System.outに続く、()の中に注目しましょう。50+100の演算結果が150となるプログラムです。前回のプログラムでは文字列を表示していましたが、整数値の表示を行っています。
整数のリテラル
100や50のような、整数を表す定数のことを整数リテラル(integer literal)と呼びます。100と書けば整数リテラル、”100″と書けば文字列リテラルになります。
文字列と数値の連結
先ほどの整数リテラルのプログラムに文字列を繋げたプログラムに改良してみましょう。以下にコードを記述しておきます。
//Sum2.java
//2つの整数値の和を表示
public class Sum2 {
public static void main(String[] args){
System.out.println("実行結果:"+(50 + 100));
}
}
処理の流れは以下のようになります。
- ()で囲まれた50+100の演算が行われます。()で囲まれた演算が優先的になるのは、日常での数学のルールと同じになります。
- 演算結果150が、文字列”150″として変換されます。
- 文字列 “実行結果:”と”150″が連結されます。そして、画面に表示されます。
もし、この(50+100)から括弧を取り除いたら、どうなるでしょうか。以下のプログラムを実行してみましょう。
//Sum3.java
//2つの整数値の和を表示(誤り)
public class Sum3 {
public static void main(String[] args){
System.out.println("50 + 100 =" + 50 + 100);
}
}
実行すると、50+100の和が50100になってしまいます。文字列の連結や数値の加算を行う+は、左から順に演算を行います。そのため、このプログラムでは、文字列”50+100=”に50という数値を文字列として”50+100=50″にしてから、100を”100″として連結しています。
加算の式で括弧を使わない場合は、以下のようにプログラムを書きます。
//Sum4.java
//2つの整数値の和を表示
public class Sum4 {
public static void main(String[] args){
System.out.println(50 + 100 + "は50と100の和です");
}
}
加算の式で括弧を書かずとも記述できますが、完全に括弧を省略してしまうと、読みにくくなっていしまいます。プログラムに応じて適せん、使い分けていきましょう。
変数
これまでのプログラムでは、50と100の数値以外の和を求めることができません。そこで、値を自由に出し入れできる変数(variable)を使うと、色々なプログラムに対応できます。
変数の宣言
変数とは、値を格納する箱のような役割を持ちます。一度、値を入れておけば、その箱があるかぎり値が保持されます。また、値の書き換えや取り出しも自由に行えます。
プログラム中には、複数の変数を設定することができます。どれがどの変数なのか分けるために名前を与えます。これを変数の宣言と言います。この宣言によって、値を入れる箱を作り、何という箱なのか設定します。以下のようにコードで変数を宣言するものを宣言文(declaration statement)と言います。
int x; //xという名前のint型の変数の宣言
intは「整数」という意味のintegerからきています。この宣言でxという名の箱が作られます。変数xが扱えるのは、「整数」だけになります。intは型(type)の1つで、文字や実数など別の値を入れたいときは、別の型を使わなければなりません。型の設定も宣言する際に重要になります。
変数をいれたプログラムは以下のように書くことができます。
//Variable.java
//変数に値を代入して表示
public class Variable {
public static void main(String[] args){
int x; //xはint型の変数
x = 100; //xに100を代入
System.out.println(x); //xの値を表示
}
}
代入演算子
上のコードでは、変数xに100の値を代入していますが、=の部分は代入するための記号で、代入演算子(assignment operator)と呼ばれます。数学のようにxと100は等しいという意味ではないので、注意しましょう。
変数の値の表示
変数に格納されている値はいつでも取り出すことができます。
System.out.println(x); //xの値を表示
表示されるのは、xの値で変数名を表示するわけではないので、気をつけましょう。
次に、複数の変数を使ったプログラムに挑戦してみましょう。以下に示すのは2つの値の合計と平均を表示するプログラムです。
//SumAve1.java
//2つの変数xとyの合計と平均を表示
public class SumAve1 {
public static void main(String[] args){
int x;
int y;
x = 100;
y = 50;
System.out.println("xの値は" + x);
System.out.println("yの値は" + y);
System.out.println("合計は" + (x + y));
System.out.println("平均は" + (x + y) / 2);
}
}
上のコードでは、intxとyを別々に宣言していますが、以下のようにまとめることもできます。
int x,y;
しかし、1行ずつ宣言した方が、個々に扱えるので宣言の追加や削除も容易になります。
初期化を伴う宣言
変数に入れるべき値が分かっているなら、最初から変数に入れておくことも可能です。そのように修正したプログラムが次のようになります。最初に値を入れる事を初期化(initialize)と言います。また、その際に入れた値を初期化子(initializer)と呼びます。
//SumAve3.java
//2つの変数xとyの合計と平均を表示(変数初期化)
public class SumAve3 {
public static void main(String[] args){
int x = 100;
int y = 50;
System.out.println("xの値は" + x);
System.out.println("yの値は" + y);
System.out.println("合計は" + (x + y));
System.out.println("平均は" + (x + y) / 2);
}
}
初期化と代入
プログラムで行っている初期化と代入は、値を入れるという点では同じですが、タイミングが異なります。以下のように理解しましょう。
- 初期化:変数を生成する時に値を入れる事
- 代入:生成済みの変数に値を入れる事
次からはキーボードからの入力に取り組んでいきましょう。