2章 式と演算子
ここから先は、次のような形で学習していきます。
- コードを書き写す(写経する)※コピペ禁止
- プログラムを動かす
- 動かしたプログラムの内容を理解する
コードを書き写すのは、実際にコードを書くとコードの意味を理解しやすいからです。
コピーしてしまうと、塊でしか理解できないので、プログラムを読めるようになりません。当然自分でプログラムを書けるようにもなりません。
目的としては、プログラムを自在に組むことができるようになることなので、はじめのうちは写経するようにしましょう(笑)
計算の文
写経するコード
public class Main {
public static void main(String[] args) {
int a;
int b;
a = 20;
b = a + 5;
System.out.println(a);
System.out.println(b);
}
}
実行結果は自分で確認してください。
そして、次の単語を覚えます。
- リテラル、変数のこと = 「オペランド」
- 「+」「*」「=」など = 「演算子」
リテラルに関して
変数の型に関しては、理解できたと思いますが、変数を宣言したときの右側部分
// 変数の宣言
int number;// 数値
String moji;// 文字列
// 変数の初期化
double shosu = 0.0; // 数値
boolean isTrue = true;// 真偽値
String moji2 = "mojimoji";// 文字列
String moji3 = "1";// 文字列
String moji4 = "0.0";// 文字列
リテラルは文字列、整数型などの変数に値を設定する前。
つまりは、「=」の右側のことです。
「String a = "文字リテラル";」とか「int i = 10」などのような初期化をした時に出てくる右側部分です。つまりは、 「"文字リテラル"」と「10」がそれにあたります。
String moji = "文字リテラル";
int seisu = 10;
上のコードの場合は、文字リテラルが「"文字リテラル"」で整数リテラルが「10」になります。
細かい説明などはこちらの動画にしてありますので、よかったらどうぞ。※コードの実行も行なっております。
エスケープシーケンス
プログラムを書いている時に下のような処理を行いたいとします。
コンソール(標準出力)に「"(ダブルクォーテーション)」を表示する
この場合、「文字列を表すリテラルで『"(ダブルクォーテーション)』を使用しているので、エスケープしないとビルドエラーになります。
System.out.println("文字列の表示は"(ダブルクォーテーション)を使います”);
このような時に「”」をエスケープします、その方法が「バックスラッシュ(¥)」になります。
System.out.println("文字列の表示は¥"(ダブルクォーテーション)を使います”);
細かいことが書いてありますが、バックスラッシュでエスケープします。
バックスラッシュをエスケープする時は次のように書きます。「¥¥」
System.out.println("データの保存はC:¥¥fldに保存してください");
四則演算を行う
Javaプログラムで四則演算を、通常の計算を行います。
写経するコード
public class Main {
public static void main(String[] args) {
int a = 0;
int b = 1;
int c = 2;
System.out.println(a + " + " + b + " = " + (a + b));
}
}
上のコードを写経して実行してみてください。表示結果は省略します。
この時、
a + " + " + b + " = "
の部分は、数値が文字列に変換されます(暗黙的にキャストします)。このため
+ (a + b)
の部分も文字列の追加として扱うか、数値の計算として処理するべきかJVMがわから無くなってしまうので
(a + b)
のように、カッコをつけます。
これは、式の評価をする順番を意図的に変えています。
カッコをつけない場合
System.out.println(a + " + " + b + " = " + a + b);
式の評価は、全部が「+」演算子なので左から順に評価されていきます。
しかし、次のように、プログラムを修正した場合
public class Main {
public static void main(String[] args) {
int a = 0;
int b = 1;
int c = 2;
System.out.println(a + " * " + b + " = " + a * b);
}
}
数学で習ったように、掛け算の処理が先に行われます(評価されます)。なのでカッコがなくてもビルドエラーになりません。
キャスト
プログラムを実行している時に、「文字列を数値に変換したい」、「数値を文字列に変換したい」。というようなことが起きます。
例えば、占いプログラムを作るとします。
占いプログラムでは、ユーザーの生年月日を入力しますが、これは文字列です。
占いの判定をするのに、西暦部分と誕生月部分を足し算して、これを合計する必要があります。
このような時には、下のようにキャストしてやります。
String born = "1999/02/22";
int seireki = (int) "1999"; // ビルドエラー
// doubleとintは同じ数値なのでキャストできる
double d = (double) 12;
// 文字列は下のように変換する
int nen = Integer.parseInt("1999");
写経するコード2
public class Main {
int r = new java.util.Random().nextInt(90);
System.out.println("乱数の生成結果: " + r);
}
写経するコード3
public class Main {
System.out.println("あなたの名前を入力してください。");
String name = new java.util.Scanner(System.in).nextLine();
System.out.println("あなたの年齢を入力してください。");
int age = new java.util.Scanner(System.in).nextInt();
System.out.println("ようこそ" + age + "歳の" + name + "さん");
}
このコードは、遊べるコードなので、たくさん遊んでみてください。
(例)
入力した値を判定して、数字かどうか区別する
IN: ABC
OUT: 数字ではありません
IN: 123
OUT: 数字です
上のような出力を行うプログラムを作成する。
他にもできることはたくさんあります。
三角形の辺の長さを入力してください。
1: ※入力値
2: ※入力値
3: ※入力値
三角形の面積=
今回はこんなところで失礼します。
でわでわ。。。