2011-06-01 25 views
153

Aynı türden ve aynı değerden birden çok değişken bildiren temiz ve verimli bir yöntem arıyorum.Java'da aynı değere birden çok değişkene sıfırlama

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

Ama böyle bir şey arıyorum: Şu anda var

String one,two,three = "" 

java yapmak mümkündür bu şey mi? Verimliliği göz önünde bulundurmak.

DÜZENLEME: Bazı üyeler bunun norm olmadığını ve çoğu insanı şaşırtacağını belirttiler. Bunu işaret ettiğin için teşekkürler. Bence bu uygulamadan uzak duracağım, ama aşağıdaki cevapları çok takdir ediyorum. Ben sanmıyorum

+3

_Keep verimliliğini aklınızda tutun ne verimlilik? – khachik

+9

Kod uzunluğu, yazım zamanı, görsel olarak basit. Demek istediğim bu. Hafızayı saklamanın hafızayı saklı tuttuğunu ve bu sorunun şeylerin “insani” tarafı ile ilgili olduğunu biliyorum. – user83643

+1

Bunun genel olarak kabul edilen Java sözleşmelerine aykırı olduğunu söyleyebilirim, okuyucuyu şaşırtacak ve IMHO bunları okumak için ayrı satırlarda bildirmekten daha zor. – Simeon

cevap

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

Bu sabit nesneler ile birlikte çalışmalıdır. Bu örneğin kesilebilir nesneler için herhangi bir anlam ifade etmez:

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

Tüm değişkenler aynı örneğine işaret olacaktır. Muhtemelen ne bu durumda gerekir ise:

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

Ya da daha iyisi bir dizi veya Koleksiyonu kullanabilirsiniz.

+6

Bunun, değişebilir nesneler için de mantıklı olduğu durumlar vardır. Örneğin, başlangıçta bağlantı listesi uygulamasında kurucuda: head = tail = new Node (value). Yani hem kafa hem de kuyruk aynı referansa işaret etmelidir. – bcorso

+0

Bunlar aynı nesne mi? Eğer daha sonra bir "=" kedi "yaparsa" iki "eşittir" ("kedi") "geri dönecek mi? – Aequitas

+0

Tek uyarı, bu statik değişkenler için işe yaramaz olmasıdır. –

2

Eğer individualling tüm değerleri ayarlamak zorunda mümkündür (eğer sağlanan ilk örnek gibi.)

Verdiğin İkinci örnek, sadece son varuable başlat "hedef" değil diğerleri.

15

Hayır, java'da mümkün değil.

Bu şekilde yapabilirsiniz .. Ama 'dan kaçınmayı deneyin.

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

Aynı anda birden çok değişkeni bildirmek ve birden çok değişkeni atamak, ancak ikisini birden:

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

Ancak bu tür şeyleri (özellikle birden fazla atama) çoğu Java geliştiricileri tarafından üzerine hoş olurdu Bunu, "görsel olarak basit" in karşısındaki düşünür.

+15

+ 1'i kullanın. –

+0

Bu String için, ancak tamsayılar için nasıl? int gün, ay, yıl, saat, dakika = gün = ay = yıl = saat = 0; doğru mu ?? – Ranjit

+0

@RanjitPati: Tam olarak Dizelerle olduğu gibi çalışır. –

11

Dize, Sarmalayıcı sınıfları Karakter, Bayt gibi temel öğeler ve ölçülebilir sınıflar için çalışır. + Bir Nesne değişken sınıflar

için s1=s2="java rocks"

String s1,s2

int i=0,j=2

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

Üç referanslar oluşturulur. Aynı nesneyi ve programınızı işaret eden tüm referanslar yanlış olacaktır.

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

Fakat bu aynı örneğine bütün nokta olacak:

+0

"Aynı nesneye işaret eden tüm başvurular ve programınız yanlış davranacaktır." Ile aynı fikirde değilim. Tek sorun, bir referansın nesnesine ne olduğu, başka bir referansın nesnesine gerçekleşmesidir - çünkü aynı nesne. Bu yanlış davranış değil; Java nasıl çalışır. – GKFX

6

Bunu yapabilirsin. Son değişkenler veya ilkel türlerle sorun oluşturmaz. Bu şekilde, her şeyi tek bir satırda yapabilirsiniz.

İlgili konular