SORU
13 AĞUSTOS 2009, PERŞEMBE


Java bir Dize Başvurusunu geçen?

C: aşağıdaki alışık değilim

void main() {
    String zText = "";
    fillString(zText);
    printf(zText);
}

void fillString(String zText) {
    zText  = "foo";
}

Ve çıktı

foo

Ancak, Java, bu işe görünmüyor. Ben String nesne olduğundan varsayalımkopyalananyerinebaşvurulan geçti. Dizeleri her zaman başvuruya göre iletilir, nesneler, sanıyordum.

Burada neler oluyor?

CEVAP
13 AĞUSTOS 2009, PERŞEMBE


Üç seçeneğiniz vardır:

  1. Bir StringBuilder kullanın:

    StringBuilder zText = new StringBuilder ();
    void fillString(StringBuilder zText) { zText.append ("foo"); }
    
  2. Kapsayıcı bir sınıf oluşturun ve yöntemi kabın örneği iletin:

    public class Container { public String data; }
    void fillString(Container c) { c.data  = "foo"; }
    
  3. Bir dizi oluşturun:

    new String[] zText = new String[1];
    zText[0] = "";
    
    
    void fillString(String[] zText) { zText[0]  = "foo"; }
    

Performans bakımından, StringBuilder genellikle en iyi seçenektir.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • lifeisforsharingDT

    lifeisforsha

    18 Mayıs 2011
  • michellefeng's channel

    michellefeng

    26 Kasım 2006
  • UrAvgConsumer

    UrAvgConsume

    1 Ocak 2012