SORU
2 EYLÜL 2008, Salı


Java "-by pass-başvuru" veya "pass-by-value"?

Hep Java düşünüyordudoğrudan atıfta bulunarakancak olmadığını iddia eden blog (örneğin, this blog) bir çift gördüm. Yapıyoruz ayrım anladığımı sanmıyorum.

Bunun açıklaması nedir?

CEVAP
2 EYLÜL 2008, Salı


Java her zaman-by-pass değer. Ne yazık ki, işaretçiler, referanslar aramak için, böylece yeni başlayanlar için kafa karıştırıcı karar verdiler. O çünküreferanslardeğer geçti.

Şöyle bir şey:

public static void main( String[] args ){
    Dog aDog = new Dog("Max");
    foo(aDog);

    if (aDog.getName().equals("Max")) { //true
        System.out.println( "Java passes by value." );

    } else if (aDog.getName().equals("Fifi")) {
        System.out.println( "Java passes by reference." );
    }
}

public static void foo(Dog d) {
    d.getName().equals("Max"); // true

    d = new Dog("Fifi");
    d.getName().equals("Fifi"); // true
}

Bu örnekte aDog.getName() "Max" dönecektir. main aDog işlevi üzerine değer nesne referans değer geçirilir, 7 **Dog "Fifi" ile. Eğer başvuru kabul olsaydı, o zaman main 10 *"Fifi" foo çağrısının dönecekti.

Aynı şekilde:

Dog aDog = new Dog("Max");
foo(aDog);
aDog.getName().equals("Fifi"); // true

public void foo(Dog d) {
    d.getName().equals("Max"); // true
    d.setName("Fifi");
}

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • AceHoodVEVO

    AceHoodVEVO

    12 Mayıs 2009
  • InsideBlackBerry

    InsideBlackB

    14 Aralık 2009
  • Jejoab

    Jejoab

    4 NİSAN 2008