代入と値
目次
- 解説
- 1. 代入とは
- 2. 代入する値
解説
1. 代入とは
変数に値を入れることを代入すると言います。代入には代入演算子「=(イコール)」を使用し、数学と同じように左辺に変数を置き、右辺に代入する値を置きます。
代入演算子 | 用例 | 処理内容 |
---|---|---|
= | A = B | Aに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に代入された値が最終的に「"あいうえお"」とならないものはどれか?