Şimdi Ara

veri tiplerinin ve String libraryde nerede tanımlanmış olduğu ?

Daha Fazla
Bu Konudaki Kullanıcılar: Daha Az
2 Misafir (1 Mobil) - 1 Masaüstü1 Mobil
5 sn
4
Cevap
0
Favori
123
Tıklama
Daha Fazla
İstatistik
  • Konu İstatistikleri Yükleniyor
0 oy
Öne Çıkar
Sayfa: 1
Giriş
Mesaj
  • buradahttp://www.baskent.edu.tr/~tkaracay/etudio/ders/prg/java/ch03/class02.htm her obje bir bir sınıfa ait nesnedir diyor burayı anladım, burada dahttps://www.baskent.edu.tr/~tkaracay/etudio/ders/prg/java/ch05/dataTypes.htm her veri tipi bir clastır diyor buraya kadar da anladım ama sormak istediğim String ifadesiyle == opetörünü kullanamıyoruz çünkü string standart bir veri tipi değil (Sanırsam objeymiş new operatörüyle de String ataması yapabiliyormuşuz ) ama normal veri tipleryle yanı yukardaki linkteki yazdığına göre veri tipi = class imiş direk new operatörü kullanmadan atama yapabiliyormuşuz, şimdi bu veri tipleri yani classlar nerede tanımlanmış ? Ve String objesi nerede tanımlanmış (bilidğim kadarıyla library de ama nerede bilmiyorum ) ? İşte benim görmek isteiğim bu tanımladığımız veri tiplerinin (int,double,float..) ve String objesinin nerede tanımlanmış olduğu.
    Umarım derdimi tam anlatabilmişimdir







  • Normal veri tipi diye bir sey yok. Once terminolojiyi duzeltelim.
    Primitive ve Class seklinde iki tane tip var.
    Primitive olanlar, boolean,int,double,float,char vs.
    Class olanlar da, Object class ' ini extend ediyorlar.
    String bir Class ve ayni zamanda bir Object. equals() , hash() gibi metodlari var. Bu metodlar Object oldugu icin geliyorlar.
    ---

    Class tanimlanan , o class'in ozelliklerini belirledigin bir alandan ibaret. Instance olusturarak, bu class tipindeki objeden yeni bir tane olusturursun.
    == operatoru , sagindaki ve solundaki instance lar birbirinin aynisi mi diye kontrol ediyor.
    ---

    rt.jar dosyasinda, java.lang paketinde String.class tanimini gorebilirsin. Bunu decompile edip tanimina ulasabilirsin.
    primitive olanlar .jar ile biten library lerde degiller.
    Java static typed bir dil, kullanilacak her class'in onceden tanimlanmis olmasi gerekiyor. primitive type lar da JVM de native kod ile tanimlaniyor, yani dedigim gibi String orneginde oldugu sekilde bunlari IDE den goremezsin.

    Biraz daha derin cevabi, dil tanimi tapilirken o dile spesifik token'lar belirlenir. Bunu compile ederken kullanir compiler. Primitif tipler, javac icerisinde belirlenmis token lar aslinda. O yuzden modern ide'lerde int ya da for yazdiginda bunlari birer "token" olarak algilar ve farkli renk koduyla gosterir. Class lari ise farkli gosterir. Cunku class isimlerini sen belirlersin ve Java spesifik token degiller.

    Library lere bakarsan arada "native" keywordu ile tanimlamalar gorursun. Iste bunlar JDK tarafinda native kod ile ( C ya da C++ ile genelde ) yazilmis diger programlari cagirirlar. Primitif tanimlari yaptiginda ya da bunlarla islemler yaptiginda da iste yine bu native kod calistiriliyor.

    Ama String ile ilgili her seyi String.class dosyasinda bulabilirsin, java.lang package inin icerisinde.

    String immutable bir obje, yani bir kere olusturdugun zaman degistiremezsin.
    String a = "a";
    a = "abc";
    String b = "abc";

    Yukaridaki gibi yazdiginda 3 tane String olusturabilirsin memory de. Ilk olusturdugunu "abc" ye cevirmezsin. Ikinci "abc" objesi ilk "abc" den farkli bir obje olabilir. Buna calisirken Runtime karar verir. O yuzden == ayni obje kontrolu yaparken garanti sunmaz sana. Masaustunde == denediginde true doner, Android 'in Dalvik JVM inde calisirken donmez. Bu yuzden equals() kullaniyoruz.




  • Mephalay M kullanıcısına yanıt
    çok sağ olasın :) , söylediklerinin bazılarını anlamadım onlarda zamanla oturacak umarım
  • deniz caliskan kullanıcısına yanıt
    Rica edeirm, o benim konuyu gereksiz detaylandirmamdan kaynaklaniyordur muhtemelen : )
  • Yapay Zeka’dan İlgili Konular
    Daha Fazla Göster
    
Sayfa: 1
- x
Bildirim
mesajınız kopyalandı (ctrl+v) yapıştırmak istediğiniz yere yapıştırabilirsiniz.