web-dev-qa-db-ja.com

Javaで複数の変数を同じ値に初期化する

私は同じタイプと同じ値の複数の変数を宣言する、クリーンで効率的な方法を探しています。今私は持っています:

String one = "", two = "", three = "" etc...

しかし、私はのようなものを探しています:

String one,two,three = ""

これはJavaでできることですか?効率を念頭に置いてください。

185
user83643
String one, two, three;
one = two = three = "";

これは不変オブジェクトでも動作するはずです。変更可能なオブジェクトに対しては意味がありません。

Person firstPerson, secondPerson, thirdPerson;
firstPerson = secondPerson = thirdPerson = new Person();

すべての変数は同じインスタンスを指しています。おそらくあなたがその場合必要とするものは次のとおりです。

Person firstPerson = new Person();
Person secondPerson = new Person();
Person thirdPerson = new Person();

それとも、配列や Collection を使ってください。

288
Alfredo Osorio

複数の変数を宣言して複数の変数を初期化することはできますが、両方を同時に実行することはできません。

 String one,two,three;
 one = two = three = "";

しかし、この種のこと(特に複数の割り当て)は、ほとんどのJava開発者にとって眉がひどくなるでしょう。彼らはそれを "視覚的に単純な" 反対のと考えています。

51

いいえ、それはJavaでは不可能です。

あなたはこのようにすることができます..しかし避けるようにしてくださいそれ。

String one, two, three;
one = two = three = "";
18
sgokhales

プリミティブやString、WrapperクラスCharacter、Byteのような不変クラスに有効です。

int i=0,j=2   
String s1,s2  
s1 = s2 = "Java rocks"

可変クラスの場合

Reference r1 = Reference r2 = Reference r3 = new Object();`  

3つの参照と1つのオブジェクトが作成されます。すべての参照は同じオブジェクトを指しているため、プログラムは正しく動作しません。

12

あなたはこれを行うことができます:

String one, two, three = two = one = "";

しかし、これらはすべて同じインスタンスを指します。それは最終的な変数やプリミティブ型に関して問題を引き起こすことはありません。このように、あなたは一行ですべてをすることができます。

10
HyperNeutrino

すべての値を個別に設定する必要があるとは限りません(最初に指定した例のように)。

2番目の例では、最後の変数を ""に初期化するだけで他のものは初期化しません。

2
RMT