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

  • Kupa World

    Kupa World

    1 EYLÜL 2011
  • tutvid

    tutvid

    19 AĞUSTOS 2006
  • xSammyJoe1

    xSammyJoe1

    19 Temmuz 2011