Şimdi Ara

Java sorularım ?

Daha Fazla
Bu Konudaki Kullanıcılar: Daha Az
1 Misafir - 1 Masaüstü
5 sn
13
Cevap
0
Favori
133
Tıklama
Daha Fazla
İstatistik
  • Konu İstatistikleri Yükleniyor
0 oy
Öne Çıkar
Sayfa: 1
Giriş
Mesaj
  • Öğrenirken anlamadığım ve gereksiz gördüğüm şeyler oluyor baya soru - cevap şeklinde ana konu da olmadığı da için kendi sorularımı burdan yazıyım dedim.

    Anlamadığım ilk şey "this" :
    Neden değişken isimlerini farklı tanımlamaktansa, aynı tanımlayıp this kullanalım ?

    2. si de şu kod neden bu şekilde çalışıyor onu anlamadım :

     
    public class Helper {
    private int month,day,year;

    public Helper(int m,int d,int y)
    {
    month = m;
    day = d;
    year = y;

    System.out.printf("The constructor for this is %s\n", this);

    }

    public String toString(){
    return String.format("%d/%d/%d",day,month,year);
    }
    }


    Bu objeyi yaratınca konsolda beklendiği gibi "The constructor for this is 19/8/2016" çıkıyor. Anlamadığım ilk şey this orda ne işe yarıyor ? 2. si de anladığım kadarıyla biz javanın kendi methodu olan toString'i kendimize göre değiştiriyoruz bu classta kullanmak amacıyla ve bu yüzden örneğin toString yerine kendi istediğimiz bir method ismi kullanınca çıktı saçmalıyor. Yukarıdaki this de bu methoddan dönen sonucu referans alıyor sanırım. Kafam allak bullak oldu, çok gereksiz geldi bu şekilde yapmak. Mesela alttaki gibi yazsak çok daha mantıklı ve okuma açısından da daha rahat bir kod olmaz mı ?

     
    public class Helper {
    private int month,day,year;

    public Helper(int m,int d,int y)
    {
    month = m;
    day = d;
    year = y;

    System.out.printf("The constructor for this is %s\n", myFormatter());

    }

    public String myFormatter(){
    return String.format("%d/%d/%d",day,month,year);
    }
    }







  • - this kullanmak bu işin rajonudur. farklı degisken isimleri kullanmanı tavsiye etmem, convention böyle.

    - bunu kullanmanı da tavsiye etmem
    bunun yerine şöyle yapmalısın:

    System.out.printf("The constructor for this is %s\n", this);
    System.out.println("The constructor for this is: " + this);

    burda this demek icinde bulundugumuz objeyi cagırmak demek. icinde bulundugumuz objeyi cagirirken de print edilen şey aslında toString'dir. orda this toStringi cagırır.
    "Basit olarak söylemek gerekirse this anahtar kelimesi o anda hangi nesne üzerinde işlem yapılıyorsa o nesnenin referansını döndürür."

    -diğer soru icin:
    @Override
    public String toString(){
    return String.format("%d/%d/%d",day,month,year);
    }

    toString java'ya özel bir şey, öyle kafana göre myFormatter() dersen onun kullanılmasını istiyorsan cagırırken
    this.myFormatter() diye çağırman lazım. ama toString'i override edersen this demek yeter, ha ama this.toString() yazsan da olur.

    Ayrıca gözünü sevim C dili kullanır gibi formatterları kullanma. toStringi şöyle yaz
    public String toString(){
    return day + "/" + month + "/" + year;
    }



    < Bu mesaj bu kişi tarafından değiştirildi funky-nd -- 19 Ağustos 2016; 18:04:08 >




  • funky-nd kullanıcısına yanıt
    Yani this deyince aslında başka bir class içinde ExampleClass exampleObject = new ExampleClass(); yapmış gibi oluyoruz o class içerisinde yanlış anlamadıysam.

    Yazarken baya kurcaladım this'in ne yaptığını anladım sanıyorum. toString dışında string döndüren bir method söylerseniz bir şey deneyeceğim doğru anlayıp anlamadığımla alakalı.

    Bir de formatter kullanmak performansı yavaşlatıyor mu ?
  • quote:

    Orijinalden alıntı: John Citizen

    Yani this deyince aslında başka bir class içinde ExampleClass exampleObject = new ExampleClass(); yapmış gibi oluyoruz o class içerisinde yanlış anlamadıysam.

    Yazarken baya kurcaladım this'in ne yaptığını anladım sanıyorum. toString dışında string döndüren bir method söylerseniz bir şey deneyeceğim doğru anlayıp anlamadığımla alakalı.

    Bir de formatter kullanmak performansı yavaşlatıyor mu ?

    mainde mesale bunu yapıyon ya:
    ExampleClass exampleObject = new ExampleClass();
    System.out.println(exampleObject);

    içinde bulundugun class'ta System.out.println(this); yapmak gibi yani dogru anlamıssın gibi.

    toString dışında başka öyle bir şey yok kendin yazarsan olur.

    diyelim ki name ve surname olarak iki property var.
    public String getNameAndSurname() {
    return name + " " + surname;
    }
    gibi

    - formatter kullanmak ilkel.




  • funky-nd kullanıcısına yanıt
    Eğer düşündüğüm gibiyse baya ibret alacağım resmen.
    Biz System.out.println(exampleObject); yaparken aslında java otomatik olarak exampleObject'i toString liyor sanırım. Bu nedenle toString'i override layınca this.toString yapmamıza gerek kalmıyor çünkü zaten onu zaten stringe çevirmek için toString'i kullanacaktı. Biz toString'den farklı bir method yazarsak bu sefer this.myMethod diye çağırmamız lazım yoksa this dediğimiz zaman java yine this'i toString liyor fakat override etmediğimiz için konsola saçma sapan karakterler yazdırıyor.
  • quote:

    Orijinalden alıntı: John Citizen

    Eğer düşündüğüm gibiyse baya ibret alacağım resmen.
    Biz System.out.println(exampleObject); yaparken aslında java otomatik olarak exampleObject'i toString liyor sanırım. Bu nedenle toString'i override layınca this.toString yapmamıza gerek kalmıyor çünkü zaten onu zaten stringe çevirmek için toString'i kullanacaktı. Biz toString'den farklı bir method yazarsak bu sefer this.myMethod diye çağırmamız lazım yoksa this dediğimiz zaman java yine this'i toString liyor fakat override etmediğimiz için konsola saçma sapan karakterler yazdırıyor.

    override la kafanı karıstırdım galiba, onu oraya yazsan da yazmasan da bir şey fark etmiyor hocam. konsola saçma sapan şeyleri ne zaman yazdı tam olarak
  • funky-nd kullanıcısına yanıt
     
    public class Helper {
    private int month,day,year;

    public Helper(int m,int d,int y)
    {

    month = m;
    day = d;
    year = y;

    System.out.println("The constructor for this is " + this);

    }

    public String toString(){
    return String.format("%d/%d/%d",day,month,year);
    }
    }


    Burda toString yerine farklı birşey yazınca Helper@15db9742 yazdırıyor. Ben doğru anladım diye düşünüyorum hocam override la zihnimi açtınız gibi geldi ama kafam çok karışmış da olabilir



    < Bu mesaj bu kişi tarafından değiştirildi John Citizen -- 19 Ağustos 2016; 19:16:19 >
  • John Citizen kullanıcısına yanıt
    su an calıstıgım proje'den örnek hocam, toString classların olmazsa olmazıdır.

    önce propertiler yazılır
    sonra constructorlar
    sonra getter ve setterlar
    en son tostring

    bazı durumlarda equals() da yazılır


     Java sorularım ?
  • quote:

    Orijinalden alıntı: John Citizen

     
    public class Helper {
    private int month,day,year;

    public Helper(int m,int d,int y)
    {

    month = m;
    day = d;
    year = y;

    System.out.println("The constructor for this is " + this);

    }

    public String toString(){
    return String.format("%d/%d/%d",day,month,year);
    }
    }


    Burda toString yerine farklı birşey yazınca Helper@15db9742 yazdırıyor. Ben doğru anladım diye düşünüyorum hocam override la zihnimi açtınız gibi geldi ama kafam çok karışmış da olabilir

    orda tostring yerine baska bir sey yazarsanız. tostring yazmamıs olursunuz, bu yüzden sapıtmış işte toString bekliyo sizden :D ondan sapıtıyo. override etmeyince kendi implemnetationunu kullanıyo işte, o da sacma sapan makine dilinde bir şey saınrım.



    < Bu mesaj bu kişi tarafından değiştirildi funky-nd -- 19 Ağustos 2016; 19:18:18 >




  • funky-nd kullanıcısına yanıt
    Teşekkürler yardımız için cidden kafamda soru işareti kalmadı. Bu arada cihangirmercan sizin site miydi açık var mı diye birkaç xss trick falan denemiştim konuyu görüp
  • quote:

    Orijinalden alıntı: John Citizen

    Teşekkürler yardımız için cidden kafamda soru işareti kalmadı. Bu arada cihangirmercan sizin site miydi açık var mı diye birkaç xss trick falan denemiştim konuyu görüp

    evet hocam :d ben de java standart edition biliyordum işte üniversite 1. sınıfta gördük, su an sizin calıstıklarınız. bu sene 2 bitti, yazın stajda öğrendim java'yı web'de kullanmayı. simdi filmlerle ilgili site yapıyorum, su an devam ediyorum işte, örnek ss: backend'i komple javayla yazıyorum, front end malum html, css.

     Java sorularım ?




  • funky-nd kullanıcısına yanıt
    Bu string olayına compositon deniyomuş sanırsam, 1 video daha izleseymişim konuyu açmama gerek kalmayacakmış.
  • 
Sayfa: 1
- x
Bildirim
mesajınız kopyalandı (ctrl+v) yapıştırmak istediğiniz yere yapıştırabilirsiniz.