Java で複数の変数を初期化する
この記事では、Java で複数の変数を同じ値で初期化したい場合の手順を解説します。また、宣言時に同じ値の変数をすべて初期化できない理由についても説明します。
Java で同じ値を持つ複数の String
変数を初期化する
下の例 1 では、String
型の変数 one
、two
、three
を宣言し、3つの変数を同じ値で初期化しています。これは連鎖代入で行っています。つまり、左端の変数の値を代入演算子の右端にあるすべての変数に代入することを意味します。
- 例 1:
package com.company;
public class Main {
public static void main(String[] args) {
String one, two, three;
one = two = three = "All three variables will be initialized with this string";
System.out.println(one);
System.out.println(two);
System.out.println(three);
}
}
出力:
All three variables will be initialized with this string
All three variables will be initialized with this string
All three variables will be initialized with this string
宣言中に変数を初期化する必要がある場合、以下のように連鎖代入を使用することができます。しかし、同じプロジェクトで複数の開発者が作業している可能性があるため、プログラムの可読性が低下します。
- 例 2:
package com.company;
public class Main {
public static void main(String[] args) {
String one, two, three = two = one = "All three variables will be initialized with this string";
System.out.println(one);
System.out.println(two);
System.out.println(three);
}
}
出力:
All three variables will be initialized with this string
All three variables will be initialized with this string
All three variables will be initialized with this string
Java で同じクラスで複数のオブジェクトを初期化する
連鎖代入法を使って、3つの文字例変数すべてに同じ値を保存できることがわかりました。しかし、同じクラスオブジェクトの参照を複数の変数に保存したいときに同じことができるでしょうか?見てみましょう。
クラスのコンストラクタで new
キーワードを使って変数を初期化すると、その変数は オブジェクト
と呼ばれ、クラスを指し示します。連鎖代入を使って同じクラスで複数のオブジェクトを作成することもできますが、同じ参照を指すことになるので、firstObj
の値を変更すると secondObj
にも同じ変更が反映されます。
以下の例では、firstObj
、secondObj
、thirdObj
の 3つのオブジェクトが一緒に代入されているが、fourthObj
は別々に代入されていることを確認することができます。出力はその違いを示しています。
package com.company;
public class Main {
public static void main(String[] args) {
SecondClass firstObj, secondObj, thirdObj;
firstObj = secondObj = thirdObj = new SecondClass();
firstObj.aVar = "First Object";
secondObj.aVar = "Second Object";
SecondClass fourthObj = new SecondClass();
fourthObj.aVar = "Fourth Object";
System.out.println(firstObj.aVar);
System.out.println(secondObj.aVar);
System.out.println(thirdObj.aVar);
System.out.println(fourthObj.aVar);
}
}
class SecondClass {
String aVar;
}
出力:
Second Object
Second Object
Second Object
Fourth Object
Rupam Saini is an android developer, who also works sometimes as a web developer., He likes to read books and write about various things.
LinkedIn