Java | Kampüs Kod https://www.kampuskod.com Kampüs Bilim Sanat Teknoloji ve Yazılım Eğitimleri Platformu Thu, 07 Oct 2021 07:56:01 +0000 tr hourly 1 https://wordpress.org/?v=6.2.2 Java İmmutable ve Mutable Nedir? – Java Dersleri https://www.kampuskod.com/yazilim/java/java-immutable-ve-mutable-nedir-java-dersleri/ https://www.kampuskod.com/yazilim/java/java-immutable-ve-mutable-nedir-java-dersleri/#respond Thu, 07 Oct 2021 07:56:01 +0000 https://www.kampuskod.com/?p=11303 Immutable (değişmez) sınıflar, nesneleri bir kez oluşturulduktan sonra nesne içeriği değiştirilemeyen sınıflardır. Aslında sabit sınıflar olarakta isimlendirebiliriz. Nesneyi oluştururken içerisinde bulunacak olan değerleri verirseniz ve sonrasında bu değerleri değiştiremezsiniz. Eğer bir immutable nesnenin state’ini değiştirmek isterseniz vermek istediğiniz state’i taşıyacak olan yeni bir nesne oluşturmak zorundasınız. Boolean, Short, Integer, Long, Float, Double, Char ve String […]

The post Java İmmutable ve Mutable Nedir? – Java Dersleri first appeared on Kampüs Kod.]]>
Immutable (değişmez) sınıflar, nesneleri bir kez oluşturulduktan sonra nesne içeriği değiştirilemeyen sınıflardır. Aslında sabit sınıflar olarakta isimlendirebiliriz. Nesneyi oluştururken içerisinde bulunacak olan değerleri verirseniz ve sonrasında bu değerleri değiştiremezsiniz. Eğer bir immutable nesnenin state’ini değiştirmek isterseniz vermek istediğiniz state’i taşıyacak olan yeni bir nesne oluşturmak zorundasınız. Boolean, Short, Integer, Long, Float, Double, Char ve String gibi tüm kapsayıcı sınıflar (Wrapper Class) java’da immutable sınıflara örnek olarak gösterilebilir. Tam tersi olarak, değiştirilebilen sınıflar da Mutable (değişebilir) sınıflardır.

Peki neden immutable sınıflara ihtiyacımız var?

Sorumuzun cevabunı hemen verelim 🙂 Bir sınıfı thread-safe yapmak istiyorsanız immutable yapmanız gerekmektedir. Immutable nesnelerin değerleri değişmeyeceği için üzerinde ne kadar thread çalışırsa çalışsın hep aynı değerler üzerinden işlem yapılacaktır. Bu noktada ortaya çıkan bir dezavantajlık söz konusuda var tabii. Immutable nesnelerin dezavantajı ise, değerin değişmesini istiyorsak yeni bir nesne oluşturmamız gerekiyor. Bu da zaman, bellek ve garbage collector maliyetleri oluşturmaktadır.

Java’da immutable sınıf nasıl oluşturulur?

  • Sınıfı, final anahtarı ile işaretleyin, böylece extend (kalıtım) edemezsiniz.
  • Sınıfın tüm alanlarını private yapın, böylece doğrudan erişime izin vermezsiniz.
  • Değişkenler için setter metodu koymayın.
  • Tüm değiştirilebilen alanları final yapın, böylece yalnızca bir kez atanabilir.
  • Tüm alanlara, constructor aracılığıyla ilk değerlerini atayın.
  • Değiştirebilir olan tüm alanların dışarıya nesnelerin klonlanarak dönmesini gerçekleştirin.

Örnek bir Immutable Sınıf yapısı aşağıdaki gibidir:

public final class ImmutablePerson {

    private final String name;

    public ImmutablePerson(String name) {
        this.name = name;
    }

    public String getName() {
        return name;
    }
}

 

The post Java İmmutable ve Mutable Nedir? – Java Dersleri first appeared on Kampüs Kod.]]>
https://www.kampuskod.com/yazilim/java/java-immutable-ve-mutable-nedir-java-dersleri/feed/ 0
Android Stduio Temelleri – Hesap Makinesi Nasıl Yapılır ? https://www.kampuskod.com/yazilim/android/android-stduio-temelleri-hesap-makinesi-nasil-yapilir/ https://www.kampuskod.com/yazilim/android/android-stduio-temelleri-hesap-makinesi-nasil-yapilir/#respond Wed, 23 Dec 2020 11:10:07 +0000 https://www.kampuskod.com/?p=9448 Hesap makinesi yapmak için yeni açmış olduğumuz projemizin içerisine uygulamamızda kullanacağımız nesneleri yerleştirmemiz gerekiyor. Bir hesap makinesi için 2 tane EditText  4 tane Button ve 3 tane de TextView kullanacağız. Tasarım ekranımıza ilk başta 2 tane TextView alıp 1. Sayı ve 2. Sayı şeklinde bilgilendirme metnimizi girelim. Ve her 2 TextView in Id sini number1 […]

The post Android Stduio Temelleri – Hesap Makinesi Nasıl Yapılır ? first appeared on Kampüs Kod.]]>
Hesap makinesi yapmak için yeni açmış olduğumuz projemizin içerisine uygulamamızda kullanacağımız nesneleri yerleştirmemiz gerekiyor. Bir hesap makinesi için 2 tane EditText  4 tane Button ve 3 tane de TextView kullanacağız.

Tasarım ekranımıza ilk başta 2 tane TextView alıp 1. Sayı ve 2. Sayı şeklinde bilgilendirme metnimizi girelim. Ve her 2 TextView in Id sini number1 ve number2 şeklinde isimlendirelim.

<TextView
    android:id="@+id/number1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="1. Sayı"
    android:textSize="18dp"
    tools:layout_editor_absoluteX="43dp"
    tools:layout_editor_absoluteY="49dp" />

<TextView
    android:id="@+id/number2"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="2. Sayı"
    android:textSize="18dp"
    tools:layout_editor_absoluteX="45dp"
    tools:layout_editor_absoluteY="86dp" />

Daha sonra 2 tane EditText alarak bunları TextView ın yanına yerleştirelim ve her ikisine birer id verelim. Burada sayi1 ve sayi2 şeklinde id verildi.

<EditText
        android:id="@+id/sayi1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:ems="10"
        android:inputType="textPersonName"
        android:text="Name"
        tools:layout_editor_absoluteX="124dp"
        tools:layout_editor_absoluteY="30dp" />

    <EditText
        android:id="@+id/sayi2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:ems="10"
        android:inputType="textPersonName"
        android:text="Name"
        tools:layout_editor_absoluteX="125dp"
        tools:layout_editor_absoluteY="77dp" />

2 tane değer alacağımız nesnemizi yerleştirdikten sonra şim de Toplama, Çıkartma, Bölme ve Çarpma işlemlerini yapabilmemiz 4 tane Button yerleştiriyoruz ve id lerini yapacakları işlemleri gröe veriyoruz. Toplama butonu için toplabtn, çıkarma butonu için cikarbtn, bölme butonu için bolbtn ve çarpma butonu için carpbtn id leri verdik.

<Button
        android:id="@+id/toplabtn"
        android:layout_width="181dp"
        android:layout_height="53dp"
        android:text="Topla"
        tools:layout_editor_absoluteX="16dp"
        tools:layout_editor_absoluteY="156dp" />

    <Button
        android:id="@+id/cikarbtn"
        android:layout_width="189dp"
        android:layout_height="53dp"
        android:text="Çıkar"
        tools:layout_editor_absoluteX="209dp"
        tools:layout_editor_absoluteY="156dp" />

    <Button
        android:id="@+id/bolbtn"
        android:layout_width="181dp"
        android:layout_height="53dp"
        android:text="Böl"
        tools:layout_editor_absoluteX="16dp"
        tools:layout_editor_absoluteY="225dp" />

    <Button
        android:id="@+id/carpbtn"
        android:layout_width="188dp"
        android:layout_height="54dp"
        android:text="Çarp"
        tools:layout_editor_absoluteX="209dp"
        tools:layout_editor_absoluteY="225dp" />

Button ları yerleştirdikten sonra her button a bir onclick olayı ekleyelim. Bu sayede her butona kendisine bir Event verebilir ve işlemleri gerçekleştirebiliriz.

<Button
        android:id="@+id/carpbtn"
        android:onClick="carpBtn"
        android:layout_width="188dp"
        android:layout_height="54dp"
        android:text="Çarp"
        tools:layout_editor_absoluteX="209dp"
        tools:layout_editor_absoluteY="225dp" />

    <Button
        android:id="@+id/toplabtn"
        android:layout_width="181dp"
        android:onClick="toplaBtn"
        android:layout_height="53dp"
        android:text="Topla"
        tools:layout_editor_absoluteX="16dp"
        tools:layout_editor_absoluteY="156dp" />

    <Button
        android:id="@+id/bolbtn"
        android:onClick="bolBtn"
        android:layout_width="181dp"
        android:layout_height="53dp"
        android:text="Böl"
        tools:layout_editor_absoluteX="16dp"
        tools:layout_editor_absoluteY="225dp" />

    <Button
        android:id="@+id/cikarbtn"
        android:onClick="cikarBtn"
        android:layout_width="189dp"
        android:layout_height="53dp"
        android:text="Çıkar"
        tools:layout_editor_absoluteX="209dp"
        tools:layout_editor_absoluteY="156dp" />

Buttonlarıma Event verdikten sonra şimdi MainActivity kısmına gelip oluşturmuş olduğumuz onclick fonksiyonlarımızı tanımlayalım.

public void toplaBtn(View view){
 
 }

 public void cikarBtn(View view){

 }

 public void bolBtn(View view){

 }

 public void carpBtn(View view){

 }

İlk başta EditText nesnelerimizi ana Class içerisinde çağırmamız daha sonra da OnCreate methodunun içerisinde tanımlamamız gerekiyor.

Daha sonra her fonksiyona 2 EditText ile almış olduğumuz verileri toplamamızı ve bu verileri toplayıp bir TextView içerisine yazdırmamızı ekleyelim.

package com.example.firstproject;
import androidx.appcompat.app.AppCompatActivity;

import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.EditText;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity {
    EditText sayi1;
    EditText sayi2;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        sayi1 = findViewById(R.id.sayi1);
        sayi2 = findViewById(R.id.sayi2);
    }

    public void toplaBtn(View view){
        int say1 = Integer.parseInt(sayi1.getText().toString());
        int say2 = Integer.parseInt(sayi2.getText().toString());
        int sonuc = say1 + say2;
    }

    public void cikarBtn(View view){
        int say1 = Integer.parseInt(sayi1.getText().toString());
        int say2 = Integer.parseInt(sayi2.getText().toString());
        int sonuc = say1 - say2;
    }

    public void bolBtn(View view){
        int say1 = Integer.parseInt(sayi1.getText().toString());
        int say2 = Integer.parseInt(sayi2.getText().toString());
        int sonuc = say1 / say2;
    }

    public void carpBtn(View view){
        int say1 = Integer.parseInt(sayi1.getText().toString());
        int say2 = Integer.parseInt(sayi2.getText().toString());
        int sonuc = say1 * say2;
    }
}

Bu işlemlerden sonra sonuc isminde bir değişken tanımlayıp işlem sonucunu ona atadık. Şimdi ise bu almış olduğumuz sonucu bir TextView içerisinde ekrana yazdırmak kaldı. Ekrana bir TextView aldık ve id sini sonuctxt koyduk daha sonra da Ana Class ve onCreate içerisinde tanımladık.

package com.example.firstproject;
import androidx.appcompat.app.AppCompatActivity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity {
    EditText sayi1;
    EditText sayi2;
    TextView sonucv;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        sayi1 = findViewById(R.id.sayi1);
        sayi2 = findViewById(R.id.sayi2);
        sonucv = findViewById(R.id.sonuctxt);
    }
    public void toplaBtn(View view){
        int say1 = Integer.parseInt(sayi1.getText().toString());
        int say2 = Integer.parseInt(sayi2.getText().toString());
        int sonuc = say1 + say2;
        sonucv.setText("" + sonuc);
    }

    public void cikarBtn(View view){
        int say1 = Integer.parseInt(sayi1.getText().toString());
        int say2 = Integer.parseInt(sayi2.getText().toString());
        int sonuc = say1 - say2;
        sonucv.setText("" + sonuc);
    }


    public void bolBtn(View view){
        int say1 = Integer.parseInt(sayi1.getText().toString());
        int say2 = Integer.parseInt(sayi2.getText().toString());
        int sonuc = say1 / say2;
        sonucv.setText("" + sonuc);
    }

    public void carpBtn(View view){
        int say1 = Integer.parseInt(sayi1.getText().toString());
        int say2 = Integer.parseInt(sayi2.getText().toString());
        int sonuc = say1 * say2;
        sonucv.setText("" + sonuc);
    }
}

Programımızı Build edip sonuca bakığımızda ise işlemlerin başarılı bir şekilde gerçekleştiğini görüyoruz.

Umarım sizin için yararlı bir yazı olmuştur.

The post Android Stduio Temelleri – Hesap Makinesi Nasıl Yapılır ? first appeared on Kampüs Kod.]]>
https://www.kampuskod.com/yazilim/android/android-stduio-temelleri-hesap-makinesi-nasil-yapilir/feed/ 0
Java’da İlkel Veri Tipleri Nelerdir? (Primitive Data Types) – Java Dersleri https://www.kampuskod.com/yazilim/java/javada-ilkel-veri-tipleri-nelerdir-primitive-data-types-java-dersleri/ https://www.kampuskod.com/yazilim/java/javada-ilkel-veri-tipleri-nelerdir-primitive-data-types-java-dersleri/#respond Thu, 06 Aug 2020 19:42:01 +0000 https://www.kampuskod.com/?p=6620 Java programlama dilinin en temel konularından biri olan veri türlerinde karşımıza çıkan İlkel Veri Tiplerini (Primitive Data Types) bu yazıda anlatmaya çalışacağım. Java İlkel Veri Tipleri (Java Primitive Data Types) Tamsayı Tipi (Integers) byte short int long Ondalıklı Sayı Tipi (Floating Point Numbers) float double Karakter Tipi char Mantıksal Veri Tipi boolean Java’da 8 farklı […]

The post Java’da İlkel Veri Tipleri Nelerdir? (Primitive Data Types) – Java Dersleri first appeared on Kampüs Kod.]]>
Java programlama dilinin en temel konularından biri olan veri türlerinde karşımıza çıkan İlkel Veri Tiplerini (Primitive Data Types) bu yazıda anlatmaya çalışacağım.

Java İlkel Veri Tipleri (Java Primitive Data Types)

Tamsayı Tipi (Integers)

  • byte
  • short
  • int
  • long

Ondalıklı Sayı Tipi (Floating Point Numbers)

  • float
  • double

Karakter Tipi

  • char

Mantıksal Veri Tipi

  • boolean

Java’da 8 farklı ilkel veri tipi vardır. İlkel veri tiplerini 4 ana başlık altında toparlayabiliriz:

  • Tamsayı Tipi (integers): 4 farklı tam sayı tipi vardır: byte, short, int ve long. Bu veri tiplerini tamsayıları belirtmek amacıyla kullanırız.
  • Ondalıklı Sayı Tipi(floating point numbers): 2 farklı ondalıklı sayı tipi vardır: float ve double.
  • Karakter Tipi: 1 adet karakter tipi vardır: char. Bu veri tipini karakterleri temsil etmek için kullanırırız: harfler, rakamlar, noktalama işaretleri, özel karakterler vb.
  • Mantıksal Veri Tipi: 1 adet mantıksal veri türü vardır: boolean. Bu veri tipinin true veya false olmak üzere sadece iki değeri vardır.

İlkel veri tiplerini daha detaylı bir sonraki yazımızda inceleyeceğiz.

The post Java’da İlkel Veri Tipleri Nelerdir? (Primitive Data Types) – Java Dersleri first appeared on Kampüs Kod.]]>
https://www.kampuskod.com/yazilim/java/javada-ilkel-veri-tipleri-nelerdir-primitive-data-types-java-dersleri/feed/ 0
Hibernate Nedir? Hibernate Framework Avantajları – Java Dersleri https://www.kampuskod.com/yazilim/java/hibernate-nedir-hibernate-framework-avantajlari-java-dersleri/ https://www.kampuskod.com/yazilim/java/hibernate-nedir-hibernate-framework-avantajlari-java-dersleri/#respond Sun, 31 May 2020 20:52:30 +0000 https://www.kampuskod.com/?p=7579 Hibernate, veritabanı ile etkileşim kurmak için Java uygulama geliştirmelerini kolaylaştıran bir Java Frameworku’dur. Hibernate açık kaynak kodlu, hafif, ORM (Nesne İlişkisel Haritalama/Eşleme (Object Relational Mapping) ) aracıdır. Hibernate, veri sürekliliği için JPA’nın tanımlamalarını uygular. ORM Tool Nedir? ORM tool (aracı), veri oluşturma, veri değiştirme ve veri erişimini basitleştirir. Veritabanı üzerinde saklanan verilere nesne eşleyen bir […]

The post Hibernate Nedir? Hibernate Framework Avantajları – Java Dersleri first appeared on Kampüs Kod.]]>
Hibernate, veritabanı ile etkileşim kurmak için Java uygulama geliştirmelerini kolaylaştıran bir Java Frameworku’dur. Hibernate açık kaynak kodlu, hafif, ORM (Nesne İlişkisel Haritalama/Eşleme (Object Relational Mapping) ) aracıdır. Hibernate, veri sürekliliği için JPA’nın tanımlamalarını uygular.

ORM Tool Nedir?

ORM tool (aracı), veri oluşturma, veri değiştirme ve veri erişimini basitleştirir. Veritabanı üzerinde saklanan verilere nesne eşleyen bir programlama tekniğidir.

Hibernate ORM Tool Şeması
Hibernate ORM Tool Şeması

ORM tool, veritabanıyla etkileşim kurmak için JDBC API kullanır.

JPA Nedir?

Java Persistence API (JPA), ORM araçlarına (tools) belirli fonksiyonellik ve standart sağlayan bir Java spesifikasyonudur. javax.persistence paketi, JPA sınıfları ve arayüzlerini içerir.

Hibernate Framework Avantajları

  • Açık Kaynak Kodlu ve Hafif (Open Source and Lightweight)

Hibernate framework’u LGPL lisansı altında açık kaynak kodludur ve hafiftir.

  • Hızlı Performans (Fast Performance)

Hibernate Framework’nun performansı hızlıdır çünkü cache (önbellek) kullanılır. Hibernate Framework’te iki tür cache vardır: İlk Seviye Cache ve İkinci Seviye Cache. İlk Seviye Cache varsayılan olarak gelmektedir.

  • Veritabanı Bağımsız Sorgu (Database Independent Query)

HQL (Hibernate Query Language (Hibernate Sorgu Dili)) SQL’in nesne yönelimli bir versiyonudur. Veritabanından bağımsız sorgular üretir. Böylece, veritabanına özgü sorgular yazmanıza gerek yoktur. Hibernate’den önce, proje için veritabanı değiştirilirse, bakım problemlerine yol açan SQL sorgusunu da değiştirmemiz gerekir.

  • Otomatik Tablo Oluşturma (Automatic Table Creation)

Hibernate Framework, veritabanı tablolarını otomatik olarak oluşturmak için kolaylık sağlar. Bu yüzden, veritabanındaki tabloları manuel olarak eklenmesine gerek yoktur.

  • Karmaşık Birleşmeyi Basitleştirir (Simplifies Complex Join)

Hibernate Framework’te birçok tablodan veri çekmek, kolaydır.

  • Sorgu İstatistikleri ve Veritabanı Durumunu Sağlar (Provides Query Statistics and Database Status)

Hibernate, sorgu önbelleğini (cache) destekler ve sorgu ve veritabanı durumu hakkında istatistikler sağlar.



Kaynaklar

https://hibernate.org/orm/

https://www.javatpoint.com/hibernate-tutorial

The post Hibernate Nedir? Hibernate Framework Avantajları – Java Dersleri first appeared on Kampüs Kod.]]>
https://www.kampuskod.com/yazilim/java/hibernate-nedir-hibernate-framework-avantajlari-java-dersleri/feed/ 0
Java Erişim Belirleyiciler (Access Modifier) – Java Dersleri https://www.kampuskod.com/yazilim/java/java-erisim-belirleyiciler-access-modifier-java-dersleri/ https://www.kampuskod.com/yazilim/java/java-erisim-belirleyiciler-access-modifier-java-dersleri/#respond Tue, 26 May 2020 19:07:29 +0000 https://www.kampuskod.com/?p=7085 Sınıf Üyelerine Erişimi Kontrol Etme Erişim düzey belirleyiciler, diğer sınıfların belirli bir alanı kullanıp kullanmayacağını veya belirli bir yöntemi çağırıp çağıramayacağını belirler. Erişim kontrolünün iki seviyesi vardır: En üst seviyede – public veya package-private (belirgin/açık değiştirici/belirleyici yok (no explicit modifier)) Üye seviyesinde – public, private, protected veya package-private (belirgin/açık değiştirici/belirleyici yok (no explicit modifier)) //no […]

The post Java Erişim Belirleyiciler (Access Modifier) – Java Dersleri first appeared on Kampüs Kod.]]>
Sınıf Üyelerine Erişimi Kontrol Etme

Erişim düzey belirleyiciler, diğer sınıfların belirli bir alanı kullanıp kullanmayacağını veya belirli bir yöntemi çağırıp çağıramayacağını belirler. Erişim kontrolünün iki seviyesi vardır:

  • En üst seviyede – public veya package-private (belirgin/açık değiştirici/belirleyici yok (no explicit modifier))
  • Üye seviyesinde – public, private, protected veya package-private (belirgin/açık değiştirici/belirleyici yok (no explicit modifier))

//no explicit modifier: Anlamı paket erişimidir. Basitçe açıklarsak, oluşturduğunuz herhangi bir sınıfla aynı paketi paylaşan bir sınıf metotlarınızı görebilir veya kullanabilir. Üst sınıfla aynı pakette olmadıkça alt sınıflar metotlarınızı göremez veya kullanamaz.

Bir sınıf, public belirleyicisiyle bildirilebilir, bu durumda bu sınıf, her yerdeki tüm sınıflarda görülebilir. Bir sınıfın belirleyicisi yoksa (varsayılan (default), package-private olarakta bilinir), o sadece kendi paketinin içinde görünürdür. (paketler ilişkili sınıfların grupları olarak isimlendirilir – sonraki bir derste bunları öğreneceksiniz.)

Üye seviyesinde, ayrıca public belirleyici kullanabilirsiniz veya üst seviye sınıflarda olduğu gibi ve aynı anlama gelen belirleyicisiz (package-private) kullabilirsiniz. Açıklamak gerekirse; belirleyicisiz dediğimiz herhangi bir erişim belirleyici kullanmamaktır. Eğer ki bir erişim belirleyici kullanmazsanız, sadece kendi paket içinde görünür. Üyeler için, ek iki erişim belirleyici vardır: private ve protected. Private belirleyici, üyeye sadece kendi sınıfı içinde erişilebileceğini belirtir. Protected belirleyici, üyeye sadece kendi paketi içinde (package-private ‘da olduğu gibi) ve ek olarak başka paketteki onun sınıfının bir alt sınıfı tarafından erişilebileceğini belirtir.

Aşağıdaki tablo her belirleyici tarafından izin verdiği üyelere erişim gösterilmektedir.

Modifier
(Belirleyici)
Class
(Sınıf)
Package
(Paket)
Subclass
(Alt sınıf)
World
(Tüm Proje)
publicEvetEvetEvetEvet
protectedEvetEvetEvetHayır
no modifierEvetEvetHayırHayır
privateEvetHayırHayırHayır
Erişim Seviyeleri / Java Erişim Belirleyici Seviyeleri

İlk veri sütunu, sınıfın kendisinin erişim seviyesi tarafından tanımlanan üyeye erişimi olup olmadığını gösterir. Gördüğünüz gibi, bir sınıfın her zaman kendi üyelerine erişimi vardır. İkinci sütun, sınıfla benzer paketteki sınıfların (ebeveynliklerini dikkate almadan) üyeye erişimi olup olmadığını gösterir. Üçüncü sütun, bu paketin dışında bildirilen sınıfın alt sınıflarının üyeye erişimi olup olmadığını gösterir. Dördüncü sütun, tüm sınıfların üyeye erişimi olup olmadığını gösterir.

Erişim seviyeleri iyi şekilde sizi etkiler. Birincisi, başka bir kaynaktan gelen sınıfları kullandığınızda, örneğin Java platformundaki sınıflar, erişim seviyeleri kendi sınıflarınızın hangi üyelerini kullanabileceğini belirler. İkincisi, bir sınıf yazdığınızda, sınıfınızdaki her üye değişkenin ve her metotun hangi erişim seviyesine sahip olması gerektiğine karar vermeniz gerekir.

Bir sınıf koleksiyonuna bakalım ve erişim seviyelerinin görünürlüğü nasıl etkilediğini görelim. Aşağıdaki şekil bu örnekteki 4 sınıfı ve ilişkilerinin nasıl olduğunu gösterir.

Erişim Seviyelerini Örneklerle Açıklamak İçin Kullanılan Örnek Sınıflar ve Paketler

Aşağıdaki tablo, Alpha sınıfının üyelerinin, kendilerine uygulanabilen erişim belirleyicilerin her birisi için nerede göründüklerini gösterir.

Modifier
(Belirleyici)
AlphaBetaAlphasubGamma
publicEvetEvetEvetEvet
protectedEvetEvetEvetHayır
no modifierEvetEvetHayırHayır
privateEvetHayırHayırHayır
Görünürlük / Java Erişim Belirleyici Seviyeleri

Bir Erişim Seviyesi Seçme İpuçları

Başka programcılar sizin sınıfınızı kullanırsa, yanlış kullanımdan meydana gelen hataların oluşmamasını sağlamak istersiniz. Erişim seviyeleri bunu yapmak için size yardım edebilir.

  • Belirli bir üye için anlamlı olan en kısıtlayıcı erişim düzeyini kullanın. İyi bir nedeniniz yoksa, private kullanın.
  • Sabitler (constants) hariç public alanlardan kaçının. (Bu eğitimde pek çok örnekte public alanlar kullanılır. Bu bazı noktaları kısaca açıklamaya yardımcı olabilir, ancak ürün kodu için tavsiye edilmez.) Public alanlar belirli bir uygulamaya bağlama ve kodunuzu değiştirmedeki esnekliğinizi sınırlama eğilimindedir.

Bu yazı Oracle Java Dökümanı kullanılarak İngilizceden Türkçeye çevrilmiştir. Sadece kaynak göstererek kullanabilirsiniz.

Çeviri Yapılan Bölüm Linki

The post Java Erişim Belirleyiciler (Access Modifier) – Java Dersleri first appeared on Kampüs Kod.]]>
https://www.kampuskod.com/yazilim/java/java-erisim-belirleyiciler-access-modifier-java-dersleri/feed/ 0
Java Servlet Nedir? – Java Dersleri https://www.kampuskod.com/yazilim/java/java-servlet-nedir-java-dersleri/ https://www.kampuskod.com/yazilim/java/java-servlet-nedir-java-dersleri/#respond Sun, 10 May 2020 05:50:00 +0000 https://www.kampuskod.com/?p=6821 Java Web teknolojisinin temelini anlamak için Java Servlet kavramını inceleyeceğiz. Java Servlet kavramı Java EE tarafında sıkça kullanılıyor. Çünkü projelerin neredeyse tamamı web platformları üzerinde. Peki, nedir bu Java Servlet? Servlet Nedir? Servletler, bir Web veya uygulama sunucusu üzerinde çalışan ve bir Web tarayıcısından veya başka bir HTTP istemcisinden gelen istekler ile HTTP sunucusu üzerindeki […]

The post Java Servlet Nedir? – Java Dersleri first appeared on Kampüs Kod.]]>
Java Web teknolojisinin temelini anlamak için Java Servlet kavramını inceleyeceğiz. Java Servlet kavramı Java EE tarafında sıkça kullanılıyor. Çünkü projelerin neredeyse tamamı web platformları üzerinde. Peki, nedir bu Java Servlet?

Servlet Nedir?

Servletler, bir Web veya uygulama sunucusu üzerinde çalışan ve bir Web tarayıcısından veya başka bir HTTP istemcisinden gelen istekler ile HTTP sunucusu üzerindeki veritabanları veya uygulamalar arasında orta bir katman gibi davranan programlardır. (Çok karmaşık gelmiş olabilir bu tanım, şekil ile açıklayalım 🙂 )

Servlet, dinamik bir web uygulaması oluşturmak için sunucu (server) üzerinde uygulamayı çalıştıran bir web bileşenidir. Servlet bir Java sınıfıdır.

Servlet Kullanmanın Avantajları Nelerdir?

  • Daha iyi bir performans sağlar.
  • Servletler, her istemci (client) isteğini karşılamak için ayrı bir işlem (process) oluşturmaya ihtiyaç duymaz.
  • Javada yazıldığı için Servetler platform bağımsızdır.
  • Sunucu üzerindeki Java güvenlik yöneticisi, bir sunucu makinesindeki kaynakları korumak için bir dizi kısıtlama uygular. Bu yüzden servletler güvenilirdir.
  • Java sınıfı kütüphaneleri tam fonksiyonelliği bir servlet tarafından kullanılabilir. Yani database, grafiksel arayüz (applet) vb. sınıflar ile iletişim kurabilir.

Servletlerin Yapabilecekleri

  • İstemciler (clients) / Tarayıcılar tarafından gönderilen açık (explicit) verileri okuyun. Bir web sayfası üzerindeki form verileri veya bir arayüz (applet) üzerinden gelen veriler.
  • İstemciler (clients) / Tarayıcılar tarafından gönderilen kapalı (implicit) HTTP istek verilerini okuyun. Bu istekler tarayıcının anladığı çerezleri, medya türlerini ve sıkıştırma şemalarını içerir.
  • Verileri işleyin ve sonuçları oluşturun. Bu aşamada veritabanı ile bağlantı kurmanız gerekebilir.
  • İstemcilere (clients) / Tarayıcılara açık veriler gönderin. HTML, XML, .gif ve EXCEL gibi
  • İstemcilere (clients) / Tarayıcılara kapalı HTTP yanıtları gönderin. (Çerezler (cookies) ve cache paratmeleri gibi)

Servetler, büyük ölçekli geliştirme projelerini destekleyen Java sınıf kütüphanelerinin genişletilmiş bir versiyonu olan Java Enterprise Edition’un (Kurumsal Sürüm) standart bir parçası olan javax.servlet ve javax.servlet.http paketleri kullanılarak oluşturulabilir.



Servlet Yaşam Döngüsü

  • Servlet, init() metotu çağrılarak başlatılır (initialize).
  • Servlet, bir istemcinin isteğini işlemek için service() metotunu çağırır.
  • Servlet, destroy() metotu çağrılarak sonlanır (terminate).
  • Sonunda, servlet Java Sanal Makinesinin (JVM) çöp toplayıcısı (garbage collector) tarafından toplanan çöptür.

init() Metotu

init() moetotu sadece bir kez çağrılır. Sadece servlet oluşturulduğunda init() metotu çağrılır ve daha sonra herhangi bir kullanıcı istekleri için çağrılmaz.

Servlet normalde bir kullanıcı servlet’e karşılık gelen bir URL’i ilk kez çağırdığında oluşturulur ancak, sunucu ilk başlatıldığında servlet yüklenmesini dahi belirtebilirsiniz.

init() metot imzası:

public void init() throws ServletException {
   // Initialization code...
}

service() Metotu

Service metotu, asıl görevleri gerçekleştirmek için ana metottur. Servlet konteyneri, istemciden(tarayıcılardan) genlen istekleri karşılamak ve istemciye yanıt dönmek için service() metotunu çağırır.

Service metotu, HTTP istek tipini (GET, POST, PUT, DELETE vb.) kontrol eder ve doGet, doPost, doPut, doDelete gibi metotları uygun şekilde çağırır.

service metot imzası:

public void service(ServletRequest request, ServletResponse response) 
   throws ServletException, IOException {
}

doGet() Metotu

Bir GET isteği, normal bir URL isteğinden veya tanımlanmış metotu olmayan bir HTML formundan kaynaklanır ve doGet() metotu tarafından karşılanmalıdır.

public void doGet(HttpServletRequest request, HttpServletResponse response)
   throws ServletException, IOException {
   // Servlet code
}

doPost() Metotu

Bir POST isteği, metot olarak POST alan bir HTML formundan kaynaklanır ve doPost() metotu tarafından karşılanmalıdır.

public void doPost(HttpServletRequest request, HttpServletResponse response)
   throws ServletException, IOException {
   // Servlet code
}

destroy() Metotu

Destroy metotu, servletin yaşam döngüsünün en sonunda sadece bir kez çağrılır. Bu metot, veritabanı bağlantılarını kapatmak, arka plandaki threadleri durdurmak vb. işleri yapmak için servlet’e bir şans verir.

Destroy metotu çağrıldıktan sonra, servlet nesnesi çöp toplama (garbage collection) için işaretlenir.

destroy metotu tanımlaması:

public void destroy() {
   // Finalization code...
}


Yararlandığım Kaynaklar

https://www.tutorialspoint.com/servlets/index.htm

https://docs.oracle.com/javaee/7/api/javax/servlet/Servlet.html

The post Java Servlet Nedir? – Java Dersleri first appeared on Kampüs Kod.]]>
https://www.kampuskod.com/yazilim/java/java-servlet-nedir-java-dersleri/feed/ 0
Java Paket Nedir? Java Package Yapısı – Java Dersleri https://www.kampuskod.com/yazilim/java/java-paket-nedir-java-package-yapisi-java-dersleri/ https://www.kampuskod.com/yazilim/java/java-paket-nedir-java-package-yapisi-java-dersleri/#respond Sat, 09 May 2020 03:06:21 +0000 https://www.kampuskod.com/?p=6808 Bir paket, ilişkili sınıfları (class) ve arayüzleri (interface) bir grup/takım düzenleyen bir ad alanıdır. Kavramsal olarak, bilgisayarınızdaki farklı klasörlere benzer olarak paketleri düşünebilirsiniz. Bir klasör içerisinde HTML sayfalarınızı, başka bir klasör içinde resimlerinizi ve başka bir klasör içinde de scriptleri veya uygulamaları tutabilirsiniz. Çünkü, Java programlama dilinde yazılmış yazılım yüzlerce veya binlerce birbirinden ayrı sınıftan […]

The post Java Paket Nedir? Java Package Yapısı – Java Dersleri first appeared on Kampüs Kod.]]>
Bir paket, ilişkili sınıfları (class) ve arayüzleri (interface) bir grup/takım düzenleyen bir ad alanıdır. Kavramsal olarak, bilgisayarınızdaki farklı klasörlere benzer olarak paketleri düşünebilirsiniz. Bir klasör içerisinde HTML sayfalarınızı, başka bir klasör içinde resimlerinizi ve başka bir klasör içinde de scriptleri veya uygulamaları tutabilirsiniz. Çünkü, Java programlama dilinde yazılmış yazılım yüzlerce veya binlerce birbirinden ayrı sınıftan oluşabileceğinden, paketler içine ilgili sınıfları (classes) ve arayüzleri (interfaces) yerleştirerek işleri düzenli tutmak mantıklıdır.

Java Platformu, kendi uygulamalarınızda kullanmak için uygun çok büyük bir sınıf kütüphanesi (bir dizi paket) sağlar. Bu kütüphane “Application Programming Interface” veya kısaca “API” olarak bilinir. Onun paketleri, genel amaçlı programlama (general-purpose programming) ile en yaygın ilişkilendirilmiş (associated) görevleri temsil eder. Örneğin, bir String objesi (nesne) karakter stringler için durum ve davranış içerir, bir File (dosya) objesi, dosya sistemi üzerinde bir dosyayı kolayca oluşturmak, silmek, incelemek, karşılaştırmak veya değiştirmek için programcıya izin verir, bir Socket objesi, ağ soketlerinin oluşturulması ve kullanılması için izin verir, çeşitli GUI objeleri, butonları ve onay kutularını (checkboxes) ve grafiksel kullanıcı arayüzleri ilgili başka herhangi bir şeyi kontrol eder. Kelimenin tam anlamıyla seçim yapabileceğiniz binlerce sınıf vardır. Bu, programcının çalışmasını sağlamak için gereken altyapıdan ziyade belli uygulamanızın tasarımı üzerine odaklanmanıza imkan verir.

Java Platformu API Şartnamesi/Beyannamesi/Tanımlaması Java SE platformu tarafından sağlanan bütün paketler (packages), arayüzler (interfaces), sınıflar (classes), alanlar (fields) ve metotlar (methods) için bütün listeyi içerir. Tarayıcınıza sayfayı yükleyin ve onu yer imleyin. Bir programcı olarak, Java Platformu API Şartnamesi en önemli tek referans dokümanınız olacaktır.

Bu yazı Oracle Java Dökümanı kullanılarak İngilizceden Türkçeye çevrilmiştir. Sadece kaynak göstererek kullanabilirsiniz.

Çeviri Yapılan Bölüm Linki

The post Java Paket Nedir? Java Package Yapısı – Java Dersleri first appeared on Kampüs Kod.]]>
https://www.kampuskod.com/yazilim/java/java-paket-nedir-java-package-yapisi-java-dersleri/feed/ 0
Java Interface (Arayüz) Nedir? – Java Dersleri https://www.kampuskod.com/yazilim/java/java-interface-arayuz-nedir-java-dersleri/ https://www.kampuskod.com/yazilim/java/java-interface-arayuz-nedir-java-dersleri/#respond Thu, 07 May 2020 16:29:55 +0000 https://www.kampuskod.com/?p=6747 Interfaceler, sınıf ve dış dünya arasında bir anlaşma oluşturur ve bu anlaşma derleyici tarafından inşa zamanında zorla uygulanır. Sınıfınız bir interface'i uygulamayı talep ederse,sınıf başarıyla derlenmeden önce bu interface tarafından tanımlanmış bütün metotlar sınıfın kaynak kodunda görünmeli.

The post Java Interface (Arayüz) Nedir? – Java Dersleri first appeared on Kampüs Kod.]]>
Daha önce öğrendiğimiz gibi, nesneler ortaya çıkardıkları metotlar sayesinde dış dünya ile etkileşimlerini tanımlar. Metotlar dış dünya ile nesnenin arayüzünü (interface) oluşturur; örneğin, televizyon setinizin önündeki butonlar siz ve onun plastik kaplamasının diğer tarafındaki elektrik kabloları arasında arayüzdür. Televizyonu açmak ve kapatmak için “güç” tuşuna basabilirsiniz.

Interface’in en yaygın hali, bir interface, boş gövdelerle birlikte ilgili metotların bir grubudur. Bir bisikletin davranışı, bir interface (arayüz) gibi belirtildiyse, aşağıdaki gibi görünür;

interface Bicycle {

    //  wheel revolutions per minute
    void changeCadence(int newValue);

    void changeGear(int newValue);

    void speedUp(int increment);

    void applyBrakes(int decrement);
}

Bu interface’i uygulamak için, sınıfınızın adı değişecekti (örneğin, ACMEBicycle gibi belirli bir bisiklet markasına) ve class (sınıf) tanımlamasında “implements” anahtar kelimesini kullanırsınız.

class ACMEBicycle implements Bicycle {

    int cadence = 0;
    int speed = 0;
    int gear = 1;

   // The compiler will now require that methods
   // changeCadence, changeGear, speedUp, and applyBrakes
   // all be implemented. Compilation will fail if those
   // methods are missing from this class.
//Derleyici şimdi changeCadence, changeGear, speedUp, and applyBrakes metotlarının
//uygulanmasını zorunlu tutacaktır. Eğer şu metotlar, bu sınıftan eksikse, derleyici başarız olur. 
    void changeCadence(int newValue) {
         cadence = newValue;
    }

    void changeGear(int newValue) {
         gear = newValue;
    }

    void speedUp(int increment) {
         speed = speed + increment;   
    }

    void applyBrakes(int decrement) {
         speed = speed - decrement;
    }

    void printStates() {
         System.out.println("cadence:" +
             cadence + " speed:" + 
             speed + " gear:" + gear);
    }
}

Bir interface’ın uygulanması, bir sınıfın sağlamayı söz verdiği davranış hakkında daha düzgün / kurallara göre olmasını sağlar. Interfaceler, sınıf ve dış dünya arasında bir anlaşma oluşturur ve bu anlaşma derleyici tarafından inşa zamanında zorla uygulanır. Sınıfınız bir interface’i uygulamayı talep ederse,sınıf başarıyla derlenmeden önce bu interface tarafından tanımlanmış bütün metotlar sınıfın kaynak kodunda görünmeli.

Not: Aslında ACMEBicycle sınıfını derlemek için, uygulanmış interface metotlarının başına “public” anahtar kelimesin eklenmeye ihtiyacı vardır. Gelecek derslerde bu kısımlara detaylıca değinmeye çalışacağız.

Bu yazı Oracle Java Dökümanı kullanılarak İngilizceden Türkçeye çevrilmiştir. Sadece kaynak göstererek kullanabilirsiniz.

Çeviri Yapılan Bölüm Linki

The post Java Interface (Arayüz) Nedir? – Java Dersleri first appeared on Kampüs Kod.]]>
https://www.kampuskod.com/yazilim/java/java-interface-arayuz-nedir-java-dersleri/feed/ 0
Java’da Kalıtım Nedir? Java Inheritance Kavramı – Java Dersleri https://www.kampuskod.com/yazilim/java/javada-kalitim-nedir-java-inheritance-kavrami-java-dersleri/ https://www.kampuskod.com/yazilim/java/javada-kalitim-nedir-java-inheritance-kavrami-java-dersleri/#respond Wed, 06 May 2020 14:34:10 +0000 https://www.kampuskod.com/?p=6727 Farklı nesne türlerinin genellikle belirli bir miktarda ortak noktası vardır. Örneğin; Dağ bisikletleri (MountainBike), yol bisikletleri (RoadBike), iki kişilik bisikletler (TandemBike) hepsi bisikletlerin özellikleri (mevcut vites, mevcut pedal ritmi, mevcut hız) paylaşır. Ayrıca her biri onları farklı yapan ek özellikler tanımlayabilir: iki kişilik bisikletlerin iki koltuk ve iki gidonu vardır, yol bisikletlerinin damla gidonu (drop […]

The post Java’da Kalıtım Nedir? Java Inheritance Kavramı – Java Dersleri first appeared on Kampüs Kod.]]>
Farklı nesne türlerinin genellikle belirli bir miktarda ortak noktası vardır. Örneğin; Dağ bisikletleri (MountainBike), yol bisikletleri (RoadBike), iki kişilik bisikletler (TandemBike) hepsi bisikletlerin özellikleri (mevcut vites, mevcut pedal ritmi, mevcut hız) paylaşır. Ayrıca her biri onları farklı yapan ek özellikler tanımlayabilir: iki kişilik bisikletlerin iki koltuk ve iki gidonu vardır, yol bisikletlerinin damla gidonu (drop handlebar) vardır, bazı dağ bisikletlerinin onlara daha düşük bir vites oranı sağlayan ek bir zincir halkası vardır.

Nesne yönelimli programlama başka sınıflardan yaygın olarak kullanılmış durum ve davranış miras almak için sınıflara izin verir. Bu örnekte, Bicycle sınıfı, MountainBike, RoadBike ve TandemBike’ın şuan üst sınıfı (superclass) haline gelir. Java programlama dilinde, her sınıfın (class) bir doğrudan superclass sahip olmasına izin verilir ve her superclass (üst sınıf), sınırsız sayıda alt sınıf (subclasses) potansiyeline sahiptir.

Bisiklet sınıflarının bir hiyerarşisi

Bir subclass (alt sınıf) oluşturma için söz dizimi basittir. Class bildiriminiz başlangıcına, extends anahtar kelimesini ve ardından miras almak için sınıfın adını kullanın.

class MountainBike extends Bicycle {

    // new fields and methods defining 
    // a mountain bike would go here

}

Bu, MountainBike’a Bicycle sınıfındaki gibi benzer tüm alanları ve metotları verir, ancak kodunun özellikle onu benzersiz yapan özellikler üzerinde odaklanmasına imkan verir. Bu, alt sınıflarınızın kodunun okunmasını kolaylaştırır. Yine de, bu kod her subclass’ın kaynak dosyasında görünmeyeceğinden, her üst sınıfın tanımladığı durumu ve davranışı uygun bir şekilde belgelemeye dikkat etmelisiniz.

Bu yazı Oracle Java Dökümanı kullanılarak İngilizceden Türkçeye çevrilmiştir. Sadece kaynak göstererek kullanabilirsiniz.

Çeviri Yapılan Bölüm Linki

The post Java’da Kalıtım Nedir? Java Inheritance Kavramı – Java Dersleri first appeared on Kampüs Kod.]]>
https://www.kampuskod.com/yazilim/java/javada-kalitim-nedir-java-inheritance-kavrami-java-dersleri/feed/ 0
Java’da == ve equals() Farkı – Java Dersleri https://www.kampuskod.com/yazilim/java/javada-ve-equals-farki-java-dersleri/ https://www.kampuskod.com/yazilim/java/javada-ve-equals-farki-java-dersleri/#comments Mon, 04 May 2020 16:52:26 +0000 https://www.kampuskod.com/?p=6621 İş mülakatlarında en çok karşılaşabileceğiniz soru tiplerinden biri de Java’daki == ile equals() metot farkı olacaktır. Hadi o zaman, size == ve equals() farkını açıklayalım. 1- Equals() ve == arasında temek fark, birinin metot diğerinin operator olmasıdır. 2- == operatörünü referans karşılaştırması (reference) (address comparison) için ve equals() metotunu içerik karşılaştırması için kullanırız. Basitçe söylemek […]

The post Java’da == ve equals() Farkı – Java Dersleri first appeared on Kampüs Kod.]]>
İş mülakatlarında en çok karşılaşabileceğiniz soru tiplerinden biri de Java’daki == ile equals() metot farkı olacaktır. Hadi o zaman, size == ve equals() farkını açıklayalım.

1- Equals() ve == arasında temek fark, birinin metot diğerinin operator olmasıdır.

2- == operatörünü referans karşılaştırması (reference) (address comparison) için ve equals() metotunu içerik karşılaştırması için kullanırız. Basitçe söylemek gerekirse, == her iki nesnenin aynı bellek konumuna işaret edip etmediğini denetlerken, .equals() nesnelerdeki değerlerin karşılaştırılmasını değerlendirir.

Detaylıca anlamak için örnek bir kod alanı koyuyorum:

public class KampusKod {
	
	public static void main(String[] args) {
		String s1 = "KAMPUSKOD";
		String s2 = "KAMPUSKOD";
		String s3 = new String("KAMPUSKOD");
		String s4 = new String("KAMPUSKOD");
		
		System.out.println(s1 == s2);
		System.out.println(s1.equals(s2));
		System.out.println(s3 == s4);
		System.out.println(s3.equals(s4));
	}

}

Kod Çıktısı:

true
true
false
true

İlk olarak String s1 kullanımı açıklayalım. String s1 = “text”; kullanımı, eğer varsa, string sabit havuzunda (string constant pool) bir örneği yeniden kullanır. Yoksa havuz içerisinde yeniden alan oluşturur. Bu durum Java’ya özgü Java Sanal Makinesi (JVM) tarafından gerçekleştirilen bir durumdur.

Şimdi Kod çıktımızı inceleyebiliriz:

  • s1 ve s2 String constant pool içerisinde aynı referansa (reference) sahiptir. s3 ve s4 ise farklı nesneleri ifade eder.
  • s1 == s2 , s1 ve s2 ‘nin hafızadaki adres değerlerini karşılaştırır ve yukarıdaki açıklamamıza göre String constant pool üzerinde aynı adresi gösterirler. Böylece ekrana TRUE yazdırır.
  • s1.equals(s2) ifadesi ise, nesneler içerisindeki değerleri (KAMPUSKOD) karşılaştırdığı için ekrana TRUE yazdırır.
  • Bildiğimiz gibi == operatörü hafızadaki adresleri karşılaştırır, s3 ve s4 birbirinden farklı nesneler oldukları için farklı adreslerde tutulurlar. Bu yüzden s3 == s4 ifadesi ekrana FALSE yazdırır.
  • s3.equals(s4) ifadesi ise, nesneler içerisindeki değerleri (KAMPUSKOD) karşılaştırdığı için ekrana TRUE yazdırır.

Anlattıklarımın hepsini aşağıdaki şekil üzerinde kısaca özetledim.

Umarım yazım sizin için faydalı ve yeterince açıklayıcı olmuştur. Java mülakatlarınızda başarılar dilerim.

The post Java’da == ve equals() Farkı – Java Dersleri first appeared on Kampüs Kod.]]>
https://www.kampuskod.com/yazilim/java/javada-ve-equals-farki-java-dersleri/feed/ 1