2:Java式と演算子 〜とある本の学習+アルファ〜

2章 式と演算子

ここから先は、次のような形で学習していきます。

  1. コードを書き写す(写経する)※コピペ禁止
  2. プログラムを動かす
  3. 動かしたプログラムの内容を理解する

コードを書き写すのは、実際にコードを書くとコードの意味を理解しやすいからです。

コピーしてしまうと、塊でしか理解できないので、プログラムを読めるようになりません。当然自分でプログラムを書けるようにもなりません。

目的としては、プログラムを自在に組むことができるようになることなので、はじめのうちは写経するようにしましょう(笑)

計算の文

写経するコード

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);
    }
}

実行結果は自分で確認してください。

そして、次の単語を覚えます。

  1. リテラル、変数のこと = 「オペランド
  2. 「+」「*」「=」など = 「演算子

リテラルに関して

変数の型に関しては、理解できたと思いますが、変数を宣言したときの右側部分

// 変数の宣言
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: ※入力値
三角形の面積=

今回はこんなところで失礼します。

でわでわ。。。

関連記事一覧

投稿者:

takunoji

音響、イベント会場設営業界からIT業界へ転身。現在はJava屋としてサラリーマンをやっている。自称ガテン系プログラマー(笑) Javaプログラミングを布教したい、ラスパイとJavaの相性が良いことに気が付く。 Spring framework, Struts, Seaser, Hibernate, Playframework, JavaEE6, JavaEE7などの現場経験あり。 SQL, VBA, PL/SQL, コマンドプロント, Shellなどもやります。

コメントを残す