代入と値

目次
  • 解説
  • 1. 代入とは
  • 2. 代入する値
問題に挑戦!
進捗を変更する




解説

1. 代入とは


変数に値を入れることを代入すると言います。代入には代入演算子=(イコール)」を使用し、数学と同じように左辺に変数を置き、右辺に代入する値を置きます。

代入演算子用例処理内容
=A = BAにBを代入する

代入変数の宣言時以降も行うことが可能で、代入の度に変数の中身は上書きされます。そのため、プログラムの途中で「今は何が入っているのか」を頭の中でシミュレーションできるようになりましょう。

    static void practiceSubstitution01() {
        String message = "あなたの";
        Logger.out(message);
        message = "私の";
        Logger.out(message);
        message = message + "名前は";
        Logger.out(message);
        message = message + "でぃぐすきるです。";
        Logger.out(message);
    }
[2020/12/31 12:34:56.789] あなたの                  // 宣言時に代入した内容
[2020/12/31 12:34:56.789] 私の                      // 上書き代入した内容
[2020/12/31 12:34:56.789] 私の名前は                // 結合して再代入した内容
[2020/12/31 12:34:56.789] 私の名前はでぃぐすきるです。

2. 代入する値


代入する際には値そのものだけでなく、以下のような方法で値の代入が可能です。2つ目以降の詳細は今後学習しますので、それまでは「変数宣言の右辺では代入する値を作っているのだな」と覚えておきましょう。

値そのものを代入

基本型およびString型の形式で表現された「値そのもの」のことをリテラルと呼びます。下記は右辺にそれぞれの型に応じた形式の値=リテラルを置き、直接代入している例です。

    static void practiceSubstitution02() {
        String customerName = "でぃぐすきる";
        Logger.out(customerName);
        int intMaxValue = 2147483647;
        Logger.out(intMaxValue);
        long overIntValue = 2147483648L;
        Logger.out(overIntValue);
    }

式の結果を代入

数値の計算や文字列の結合などを数学と同じようにと呼びます。下記は式を右辺に置き、式の結果を代入している例です。

    static void practiceSubstitution02() {
        ~ 前半省略 ~
        String displayMessage = "こんにちは、" + customerName + "さん!";
        Logger.out(displayMessage);              // 文字列結合式の結果
        long calculateResult = intMaxValue + 1L;
        Logger.out(calculateResult);             // 計算式の結果
        boolean isSameValue = (calculateResult == overIntValue);
        Logger.out(isSameValue);                 // 比較式の結果
    }

他のメソッドの実行結果を代入

メソッドは呼び出し元に実行した結果などを戻すことができ、これを戻り値と言います。下記はメソッドの呼び出しを右辺に置き、メソッドの戻り値を代入している例です。

    static void practiceSubstitution03() {
        int addResult = addMethod(100, 200); // 呼び出す際に整数を2つ渡す
        Logger.out(addResult);               // 受け取った戻り値を出力
    }

    static int addMethod(int a, int b) {
        return a + b; // 受け取った2つの整数を加算して「return」で戻す
    }

クラスの実体を代入

内部にデータを保持してそれを操作するようなクラスの場合、クラスを設計図として、その実体(インスタンス)を作ってから操作を行います。下記はそのインスタンスの作成処理を右辺に置き、作成されたインスタンスを代入している例です。

    static void practiceSubstitution04() {
        // 同じクラスを設計図としてnewで別々の実体を作り代入している
        // 実体が異なるため、同じ仕組みでも別々の小数を保持できている
        BigDecimal bigDec1 = new BigDecimal("0.2");
        BigDecimal bigDec2 = new BigDecimal("0.1");

        // どちらの実体のメソッドで引き算するかで結果が変わる
        Logger.out(bigDec1.subtract(bigDec2)); // 0.1
        Logger.out(bigDec2.subtract(bigDec1)); // -0.1

        // Stringもクラスのため本来はnewで実体化するが・・・
        String stringInstance1 = "Stringのみこの形式で実体化される";
        String stringInstance2 = new String("この方法は無駄");
        Logger.out(stringInstance1);
        Logger.out(stringInstance2);
    }

問題

確認問題


確認問題1

この中で変数aに代入された値が最終的に「"あいうえお"」とならないものはどれか?