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ş:
Oluşturma "mantıksal özel veya&qu...
Nasıl Ayın gün söylemek format mı&; 11...
İlk idam alır Java, " " veya...
Dönem "kanonik form" veya &q...
Java standart "boş veya eşit"...