Java ve Pointer Kavramı

Başlatan erdemakin09, 07 Mayıs 2016 - 16:33:15

« önceki - sonraki »

0 Üyeler ve 1 Ziyaretçi konuyu incelemekte.

erdemakin09

Arkadaşlar okulda 2 hatta 3 senedir sürekli c/c++ dilinde ve pointerlar kullanılarak oluşturulan algoritmalarda programlar yazdık. Şimdi javaya geçmeye çalışıyorum fakat pointer olmadığı için çok zorlanıyorum. Algoritma dahi kuramıyorum. Ne yapmam gerek nasıl ilerlemem gerek var mı fikirleri önerileri olan?
Her Can Bir Gün Ölümü Tadacaktır!

bugra9

Genelde java'dan c/c++ diline geçerken zorlanılır ve c/c++ bilen birisinin javaya alışması çok kolaydır.

Burada bakman gereken javanın pointer/referans'ları nerelerde kullandığı nerelerde kullanmadığı. Bu durumları öğrendikten sonra bunlara göre kodlarını yazarsın. Eğer yine de pointer kullanman gerekirse, javanın pointer kullandığı yapıları kendine göre uyarlayabilirsin. Örneğin,

C ile pointer kullanımı,

void main() {   
    int*    x;
    int*    y;

    x = malloc(sizeof(int));
    *x = 1;   
    *y = 2;    // Hata verecektir.
    y = x;
    *y = 2;
}


Bunun benzerini java ile yazarsak,

class Intp {
    public int value;
}

public class Test() {
    public static void main(String[] args) {
        Intp  x;
        Intp  y;

        x = new Intp();
        x.value = 1;
        y.value = 2;   // Hata verecektir
        y = x;
        y.value = 2;
    }
}


Burada anlatmak istediğim javanın davranışlarını yani alt yapısını bilirsen ki öyle uzun bir şey değil 4-5 farklı kullanımı var, kodlarını rahatça yazabilirsin.

erdemakin09

Alıntı yapılan: bugra9 - 07 Mayıs 2016 - 18:14:31
Genelde java'dan c/c++ diline geçerken zorlanılır ve c/c++ bilen birisinin javaya alışması çok kolaydır.

Burada bakman gereken javanın pointer/referans'ları nerelerde kullandığı nerelerde kullanmadığı. Bu durumları öğrendikten sonra bunlara göre kodlarını yazarsın. Eğer yine de pointer kullanman gerekirse, javanın pointer kullandığı yapıları kendine göre uyarlayabilirsin. Örneğin,

C ile pointer kullanımı,

void main() {   
    int*    x;
    int*    y;

    x = malloc(sizeof(int));
    *x = 1;   
    *y = 2;    // Hata verecektir.
    y = x;
    *y = 2;
}


Bunun benzerini java ile yazarsak,

class Intp {
    public int value;
}

public class Test() {
    public static void main(String[] args) {
        Intp  x;
        Intp  y;

        x = new Intp();
        x.value = 1;
        y.value = 2;   // Hata verecektir
        y = x;
        y.value = 2;
    }
}


Burada anlatmak istediğim javanın davranışlarını yani alt yapısını bilirsen ki öyle uzun bir şey değil 4-5 farklı kullanımı var, kodlarını rahatça yazabilirsin.

Anlıyorum biraz daha uğraşmam gerekiyor. Teşekkür ederim :)
Her Can Bir Gün Ölümü Tadacaktır!

Amenofis

#3
Pointer olmayan dil olmaz. Javadaki obje referansları pointerdır.

class Ogrenci {
public String isim;
public int no;
public Ogrenci sonraki;
}


Bu Ogrenci sınıfı C' deki structlara denk bişey gördüğün gibi, hepsi public. "sonraki" üyesi bir pointer, yani başka bir Ogrenci nesnesini gösterebilir.

Haoskman

Kardeşim Javayı anlayabilmen için Sınıf-Nesne kavramını çok iyi çözmen gerekiyor. Zaten Java'da her şey bir nesne. Yani object oriented programming, türkçesiyle Nesneye Dayalı Programlama'nın temellerini öğrenerek başlamalısın.

Erdem

Erdem hangi algoritmalardan bahsediyorsun  ;)

Java'da referanslar varmış. Referansın göstergeden farkı ("pointer")

1- Üzerlerinde aritmetik işlemler yapılamıyor.
2- Nesneyi içeren bellek alanına işaret etmiyorlar. JVM bağımsız olarak sanal bellek üzerinde bunların yerlerini değiştirme özgürlüğüne sahip ve çöp toplama esnasında büyük olasılıkla bu yapılıyormuş.

C++'de de aslında gerekmedikçe gösterge yerine referansları yeğleyin, RAII (Resource Acquisition is Initialization) den istifade edin gibi tavsiyeler vardır. RAII Türkçeye çevirirsek kaynakları kurucularda ayırıp bozucularda vermek gibi düşünebiliriz.



Mesaj tekrarı yüzünden mesajınız birleştirildi. Bu mesajın gönderim tarihi : 02 Ekim 2016 - 22:45:21

Alıntı yapılan: Amenofis - 07 Mayıs 2016 - 23:24:09
Pointer olmayan dil olmaz. Javadaki obje referansları pointerdır.

Amenofis, yukarıda javadaki referansların göstergeden farklarını anlatmaya çalıştım.