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

  • Excel Video Tutorials

    Excel Video

    6 Aralık 2012
  • jkimisyellow...ish

    jkimisyellow

    8 Temmuz 2009
  • Rachel Talbott

    Rachel Talbo

    26 Ocak 2011