2013-05-12 33 views

cevap

17

ben düzgün bu cevap zerafet var, ama emin değilim ...

  • Bir Nesne A Sınıfı bir örneğidir, bu
  • bir referanstır hafızasında bazı nereye saklanır İşaretçiyi, nesnenin bulunduğu bellek konumuna tanımlamak için ne kullanılır.
  • Değişken, uygulamanızda o bellek konumuna erişebileceğiniz bir araçtır (değeri "değişken" dir). Değişken sadece (onun boş değilse) tek bir bellek adresini işaret sağlayabilir ancak uygulamada
0

evet Nesne başvurusu, gerçek nesne Java

0

tüm nesneler, örneğin

Object o = "foo"; Yukarıdaki örnek bir referans yer alır

için referans olarak anılır bellek yerini tutan değişkendir o, "foo" nesnesine.

8

Nesne Referans değişken java nedir yaşam döngüsü dışında noktası farklı konumlara yoluyla değişebilir ve?

Basitçe, bu tip olan bir nesne türü olan bir değişkendir; yani, java.lang.Object ya da java.lang.Object alt tipi olan bir tür.

referans değişken nesnenin bellek adresini tutuyor mu?

Muhtemelen evet, ama muhtemelen hayır.

Bu JVM nesne başvurularını temsil bağlıdır. Çoğu JVM'de, nesne başvurusu , bir bellek adresi veya işaretçisi kullanılarak sahnelerin arkasında temsil edilen'dur. Ancak da diziye bir dizin olarak gösterilebilir ... ya da başka bir şey. (Aslında, bir nesne referansı aslında işaretçiler bir diziye bir indeks oldu deneysel JVM ile etrafında haberci oldum.)

noktasıdır Java nesnesi referansları tasarlanmış-gizlemek olan bir soyutlama olduğunu Sizden temsil/uygulama detayları. Asıl temsil sizi ilgilendirmez ... çünkü saf Java'da program yapmanın önemi yoktur. Saf Java'da gerçek hafıza adresini tutamazsın ... ve bu iyi bir şey. JVM (özellikle çöp toplayıcı), bir nesnenin gerçek hafıza adresini size söylemeden değiştirebilir. Bir uygulama nesne adresleri elde edebilir ve kullanabilirse, bununla başa çıkmak gerekir ve temel olarak zor bir problemdir.

+0

Bu güzel ve temiz –

+0

Yani referans değişkeninin türü, Nesne türü veya bunun alt sınıfı ise, s1'in "String s1 = new String (" string "); Ayrıca bu kod hafızada "string" için iki nesne s1 ve nesne yaratacaktır? – Dexter

+0

1) Kesinlikle hayır. 's1 bir değişkendir. 's1' * * bir nesne referansı içerir, 2) Hayır, çünkü' s' bir nesne değildir; bakınız 1) –

1

Nesne Referans değişken sadece c pointer ancak tam olarak bir işaretçi gibi.
JRE'ye bağlı olarak, JRE, bir işaretçi gibi ve işaretçiye işaretçi olarak muamele edilen başka bir JRE gibi bazı JRE sağlar.
refernce variable just define a way to reach your object. Java platform bağımsız bir dildir, böylece bellek yönetimi farklı cihazlarda farklıdır, bu yüzden nesneye ulaşmak için benzersiz bir yol vermesi zordur.

İlgili konular