Arama butonu
Bu konudaki kullanıcılar: 1 misafir
5
Cevap
1057
Tıklama
0
Öne Çıkarma
Class Oluşturma
E
13 yıl (90 mesaj)
Çavuş
Konu Sahibi

Java'da class oluştururken

ClassIsmi Obje = new ClassIsmi(); şekilnde oturuyoruz.

Örneğin

araba bmw = new araba();

şeklinde.

Gelelim Sorulara

1-) sadece araba bmw şeklinde yazarsak. Sanırım sadece objeyi oluşturuyoruz ve bellekte herhangi bir yer kaplamıyor.
2-) new JLabel("Buton"); şeklinde yazarsak. Bellekte bir yer kaplıyor fakat herhangi bir objeye ait olmadığı için sanırım fonksiyonlarına ulaşılamıyor ?

DH forumlarında vakit geçirmekten keyif alıyor gibisin ancak giriş yapmadığını görüyoruz.

Üye olduğunda özel mesaj gönderebilir, beğendiğin konuları favorilerine ekleyip takibe alabilir ve daha önce gezdiğin konulara hızlıca erişebilirsin.

Üye Ol Şimdi Değil



G
13 yıl (101547 mesaj)
Yarbay

"stack memory" ve "heap memory" kavramlarını bilmen gerek.

stack memory'de int, boolean... gibi basit veriler ve nesne referansları tutulur.

heap memory'de ise nesneler tutulur.
-------


Araba bmw = new Araba( );

burada denklemde sağ tarafta kurucu metot çağrılır yani nesne oluşur. sol tarafta ise Araba türünden nesne referansı alacak bir değişken oluşur. yani "bmw" kendisi nesne değildir; nesne referans adresini taşıyan bir değişkendir.

bu konuyu daha derin öğrenmek istersen java başlığının en altlarında bana ait bir konu vardı orda farklı türde veriler için bellek yapılarını anlatmıştım.

1-) sadece "Araba bmw;" yazarsan adres bilgisi taşıyacak kadar yer kaplar fakat içindeki değer null olur.

2-) sadece new Araba( ) yazarsan nesne oluşur. bunun kaplayacağı alan basit veri tiplerinde olduğu gibi kalıplaşmış değildir; esnektir. fakat bu nesnenin adresini gösteren bir değişken olmadığı için nesne garbageCollector tarafından silinir.
Böyle olması nesneye ulaşılamaz demek değildir. nesneyi oluşturduğun anda onunla işlem yapılabilir fakat daha sonra onunla işlem yapmak için onu işaret eden bir değişkene ihtiyaç vardır.





< Bu mesaj bu kişi tarafından değiştirildi Guest -- 10 Şubat 2013; 13:03:02 >

< Bu ileti mobil sürüm kullanılarak atıldı >
Bu mesaja @EYC, @Guest-BF8E9B238 cevap verdi.
G
13 yıl (8718 mesaj)
Yarbay

Javada stack, heap gibi şeyleri bilmek gerekmez. new Araba() sadece bir sözdizimi. Nesnenin nerede oluşturulacağına derleyici karar verir. Özellikle metod içi yerel nesneleri genelde stack ta tutar.

Ek bilgi olarak "Araba bmw;" c++ ta mümkündür.


Bu mesaja 1 cevap geldi.
G
13 yıl (101547 mesaj)
Yarbay

quote:

Orijinalden alıntı: elektro_gadget

Javada stack, heap gibi şeyleri bilmek gerekmez. new Araba() sadece bir sözdizimi. Nesnenin nerede oluşturulacağına derleyici karar verir. Özellikle metod içi yerel nesneleri genelde stack ta tutar.

Ek bilgi olarak "Araba bmw;" c++ ta mümkündür.

new Araba( ); yazarak zaten nesnenin nerede oluşacağına karar vermiyoruz. derleyici onu bellekte belli bir adrese koyuyor fakat oluşan bu nesnenin adresini "Araba bmw" şeklinde tanımadığınız Araba türünde bmw değişkeninde tutarız. aksi taktirde ilk kullanımdan sonra nesneye ulaşamayız.

System.out.printline(
bmw ); yazarsanız ekranda nesnenin adresini görebilirsiniz.

Araba bmw; java'da da mümkün yukarda yazmışım ama içerisinde adres bilgisi olmaz.

stack, heap, static memory kavramlarını programlama yapmak için bilmek gerekmez fakat arkadaşıma sorduğu sorunun cevabı oradaydı. bu bilgilerin gerekip gerekmediği oracle sertifika sınavlarında görülebilir.



< Bu ileti mobil sürüm kullanılarak atıldı >

E
13 yıl (90 mesaj)
Çavuş
Konu Sahibi

Teşekkürler cevaplarınız için

Benim merak ettiğim, new komutu gelinceye kadar hafızada herhangi bir yeri işgal ediyormuydu.

Nesne, Sınıf Kavramları ve Bellek Yapısı konunuz galiba. O Konuyuda okuyorum.





< Bu mesaj bu kişi tarafından değiştirildi EYC -- 10 Şubat 2013; 15:32:26 >
Bu mesaja 1 cevap geldi.
G
13 yıl (101547 mesaj)
Yarbay

quote:

Orijinalden alıntı: EYC

Teşekkürler cevaplarınız için

Benim merak ettiğim, new komutu gelinceye kadar hafızada herhangi bir yeri işgal ediyormuydu.

Nesne, Sınıf Kavramları ve Bellek Yapısı konunuz galiba. O Konuyuda okuyorum.

bardak, içi boş olsa da masa üzerinde bir yer kaplar.

nasıl ki "int a = 7;" ile int b = 524;" hatta "int c;" bellekte 4 bit yer kaplar.

kaç bit olduğunu bilmiyorum ama karşısına "new Araba( );" demesen de "Araba bmw" stack memory'de yer kaplar. zaten tanımladığın bir şeyin yer kaplamaması düşünülemez.



< Bu ileti mobil sürüm kullanılarak atıldı >

DH Mobil uygulaması ile devam edin. Mobil tarayıcınız ile mümkün olanların yanı sıra, birçok yeni ve faydalı özelliğe erişin. Gizle ve güncelleme çıkana kadar tekrar gösterme.