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

  • FND Films

    FND Films

    2 Mayıs 2006
  • Shameless Maya

    Shameless Ma

    24 Mayıs 2012
  • tseyina

    tseyina

    2 AĞUSTOS 2006