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

  • Eric Anthony

    Eric Anthony

    13 AĞUSTOS 2011
  • Nick Pitera

    Nick Pitera

    8 NİSAN 2006
  • tychoadragmire

    tychoadragmi

    20 Mart 2006