Değişkenler

Değişkenler belirli bir değeri sizin için saklayan yapılar olarak düşünülebilir. Veri tipleri yazımızdaki bahsettiğimiz gibi java tip güvenli bir dildir. Dolayısı ile bir değişkenin nasıl bir değer taşıdığını biliriz. Bu durumu bir posta kutusu ile benzetebiliriz. Düşünün ki size gelen posta teslimatlarını sınıflandırmak istiyorsunuz. Mektuplar için bir posta kutunuz, büyük koli teslimatları için başka bir kutunuz var. Büyük koli kutusuna mektup atılması durumunda bir alarm çalıyor ve kutu mektubu kabul etmiyor. Bu durumda hangi posta kutusundan nasıl bir teslimat çıkacağını garantilemiş oluyorsunuz. Tip güvenliği de tıpkı bunun gibidir.

Değişken tanımı yapılırken belirli bir sırayı izlemeniz gerekmektedir. Önce değişkenin tipini yazar ve ardından değişkenin ismini yazarsınız. Şimdi bir tam sayı değer (int) taşıyan bir değişken tanımı yapalım. Değişkenimizin ismi ise count olsun.

int count;

Satır sonundaki noktalı virgül komutun sona erdiğini gösterir. Bunu ilerleyen yazılarda da göreceğiz.

Şimdi de birden fazla değişkeni bir arada tanımlamayı görelim.

String isim, soyisim, cinsiyet;

Yukarıdaki satır metin içerikli 3 adet değişkenin tanımlanmasını gösteriyor. Bunlar isim, soyisim ve cinsiyet ismindeki değişkenler.

Bu iki örnekte yaptığımız işlem değişken tanımlama (Variable Declaration) olarak isimlendirilmektedir. Yazının başında söylediğimiz gibi değişkenler belirli değerleri bizim için saklarlar. Bunun için bu değişkenlere nasıl değer ataması yapacağımızı da görelim. Öncelikle count değişkeni örneğine tekrar dönüyorum. Buradaki count değerini 5 yapmak için iki yaklaşım sergileyebiliriz.

int count;
count = 5;
int count = 5;

İlk örnekte değişken tanımlanmış ve sonraki satırda eşittir işareti, yani atama operatörü ile değeri 5 yapılmış. Eşittir işareti sağında bulunan değeri solunda bulunan değere atama yapmak için kullandığımız bir operatördür.

İkinci örnekte ise tanımlama anında değer yüklemesi yapılmış. Değişkenimize (count) değer yüklemesi yaptığımız adımlara İngilizce ismiyle Variable Initialization denilmektedir.

Birden fazla değişkeni aynı anda tanımlarken de değer yüklemesi yapmak mümkündür. Yukarıdaki örneği buna göre tekrar düzenleyelim.

String isim = "Uğur", soyisim = "Uçar", cinsiyet = "Erkek";

Bu örnek için bir de ayrı ayrı tanımlamanın nasıl yapıldığına bakalım.

String isim, soyisim, cinsiyet;

isim = "Uğur";
soyisim = "Uçar";
cinsiyet = "Erkek";

Eğer değer yüklemesini tanımdan önce yapmaya kalkarsanız derleyici sizi uyaracaktır ve programınız çalışmayacaktır. Ancak yukarıdaki atamaların yerini değiştirirseniz bu bir sorun yaratmayacaktır. Yani aşağıdaki ve yukarıdaki kod arasında fark yaratan bir çıktı bulunmamaktadır.

String isim, soyisim, cinsiyet;

soyisim = "Uçar";
cinsiyet = "Erkek";
isim = "Uğur";

Değişkenlerin İsimlendirilmesi

Java programlama dili sizi değişken isimlendirmelerinde belirli kuralların içerisinde tutmak ister. Bunun için isimlendirmede kullanabileceğiniz bir çerçeve çizmiştir. Değişken isimlendirme kurallarını aşağıda bulabilirsiniz.

  • Değişken isimleri bir harf başlar. Bununlar beraber başlangıç karakteri $ veya _ olabilir.
  • Değişken isimleri harfleri, sayıları, $ ve _ işaretlerini barındırabilir.
  • Değişken isimlerinde boşluk olamaz.
  • Değişken isimleri büyük-küçük harf duyarlıdır. ad, Ad, aD ve AD farklı değişkenlerdir.
  • Java için rezerve edilmiş anahtar kelimeleri değişken ismi olarak kullanamazsınız. (int, boolean vs.)

Değişkenlerle ilgili şimdilik aktaracaklarım bu kadar. Şu ana kadar temel java konu başlığının temellerini atmaya devam ettik. Sonraki yazıda görüşmek üzere.

Syntax (Sözdizimi)

Elimizdeki bilgilerle javada syntax konusuna geçebileceğimizi düşünüyorum. Syntax bir programlama dilindeki ifadelerin belirli bir düzende yazılması anlamına gelmektedir. Önceki yazılarda verdiğim küçük programlar, bu bahsi geçen sözdizim kurallarını takip etmektedir. Java, C tabanlı bir syntax disiplinini izlemektedir. Bu tarz bir dilde kodlama yaptıysanız, aşağıdaki konuları çabucak geçebileceğinizi düşünüyorum.

Biraz geri gidelim ve “Merhaba dünya” demek için yazdığımız kodu hatırlayalım.

public class HelloWorld {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		System.out.println("Merhaba Dünya");
	}

}

Öncelikle görünen en basit yerden başlayalım. Bunun için yorum satırını seçmek istiyorum. Javada yorum satırları iki şekilde yazılabilir.

  • Tek satır yorumlar
// Bu bir tek satırlı yorum. Satır başındaki çift slash bunu belirtir.
  • Çok satırlı yorumlar
/*
Bu bir çok satırlı yorum.
İlk satırdaki slash-yıldız ile satırlar başlar.
Son satırdaki yıldız-slash ile yorum ifadesi sonlanır
*/

Javada çalıştıracağımız kodlar bir sınıf bloğunun içerisinde yer almalıdır. Bir blok süslü parantezler arasında kalan bölgedir. Açılışı (Sağa bakan süslü parantez) ve kapanışı (Sola bakan süslü parantez) olmalıdır. Aksi durumda derleyici hata verecektir.

public class HelloWorld {
// Burası bir sınıf bloğu 
}

Bununla birlikte dikkat edilmesi gereken husus javanın büyük-küçük harf duyarlı yani case sensitive olmasıdır. Rezerve edilmiş anahtar kelimeleri tanımlandığı gibi kullanmanız gerekmektedir. Yani class, Class, CLaSs ve clasS farklı şeylerdir. Yukarıda verdiğimiz sınıf bloğunun başına gidersek orada 3 tane sözcük göreceğiz.

  • public: Erişim düzenleyicidir. Bu örnekte; ilgili sınıfa herkesin erişebileceğini söylemektedir. Bu konuya daha sonra da değineceğiz.
  • class: sınıf tanımlama için gerekli anahtar kelimedir. Kendisinden sonra gelen sözcüğün bir sınıfı nitelediğini belirtir.
  • HelloWorld: Kullanıcı insiyatifine kalmış bir sözcüktür. Sınıfımızın ismidir. Genel disiplin olarak sınıf isimleri PascalCase yazılır. Dosya adınızın da sınıf ismi ile aynı olması beklenir.

Javada method ismi verilen ve belirli işleri gerçekleştiren yapılar mevcuttur. Bunları bir fonksiyonu gerçekleştirmek için peşpeşe çalışan komutlar bütünü gibi düşünebiliriz. Bir java uygulaması başlarken belirli isimdeki bir methoda ihtiyaç duyar. Merhaba dünya uygulamamızda da bu method tek başına mevcuttur.

  • main methodu java uygulamalarının başlangıç noktasıdır.
	public static void main(String[] args) {
		// main method bloğu
	}

Main methodu tıpkı diğer methodlar gibidir. Eğer java uygulamalarını bir arabaya benzetirsek, main methodu arabanın kontağı gibidir. Method tanımımız 4 anahtar sözcük ve 1 ifade ile oluşturulmuştur.

  • public: Erişim düzenleyicidir.
  • static: Daha sonraki konularda değineceğimiz bir anahtar kelime. Şu an bahsetmeden geçiyoruz.
  • void: Methodun geri dönüş değerinin tipidir. Geri dönüş tipi void olan bir method geriye değer dönmez. Bunu benzetmek gerekirse
    • İki sayıyı kendi içinde toplayıp sonucu söylemeyen bir method void dönüş tipli tanımlanır
    • İki sayıyı toplayıp sonucu söyleyen method sayısal dönüş tipli tanımlanır
  • main: Methodumuzun ismidir. Genel disiplin olarak küçük harfle başlar ve camelCase olarak isimlendirilir.
  • Parantezli ifade: Methodun aldığı parametrelerdir. İki sayıyı toplayan bir method iki adet parametre alır. Bu methodumuz 1 parametre almıştır.
    • String[]: Alınan parametrenin tipidir. Bu ifade, parametrenin tipinin bir String dizisi olduğunu belirtir.
    • args: Alınan parametrenin adıdır. Method bloğu içerisinde bu isimle, bu değişken kullanılabilir.

Merhaba dünya uygulamamızda kalan son satıra da değinelim.

System.out.println("Merhaba Dünya");

Az önce değindiğimiz üzere javada belirli işleri gerçekleştirmek üzere bir araya gelmiş kodlar bütününe method diyoruz. Elbette javada kendi methodlarımızı tanımlamamız veya javanın kendi tanımlamış olduğu methodları kullanmamız mümkündür. Burada da java içerisinde bulunan System isimli sınıfın out isimli alanının println isimli methodunu kullanıyoruz. Bu ifadeyi dörde ayırabiliriz

  • System.out.println: Kullanmak istediğimiz methodun lokasyonu (Sınıf.eleman.method)
  • (): Methodun parametrelerinin alındığı parantezler
  • “Merhaba Dünya”: Methodun parametresi
  • Noktalı virgül: İfade satırının bittiğini gösteren işaretçi. Javada satır sonları noktalı virgül ile derleyiciye bildirilir. Bunu her satırın sonuna yazmak gerekmez. Dikkat ederseniz blok açılış ve kapanışlarında, boş satırlarda ve yorum satırlarında noktalı virgül bulunmamakta.

Burada değinilen bazı konular hiç bilmeyenler için yabancı kalabilir. Önerim ilerleyen konuları incelemeye devam etmeniz ve zaman zaman geri dönüp konuları tekrar okumanızdır. Sözdizimi konusunda şimdilik aktarabileceklerim bunlar. Sonraki yazılarda kodlama yapmaya başlayacağımız işlere doğru yol alacağız. Şimdilik önerim ilk yazılara hızlıca bir göz gezdirmeniz olacak. Unutmayın ki bunlar temel konular. Temel ne kadar sağlam olursa, bina o kadar güçlü olur!

Veri Tipleri

Java diğer bazı dillerin (perl, php) aksine tip güvenliği (type-safe) sağlayan bir dildir. Tip güvenliği kabaca belirli bir tipteki veriyi, belirli bir tip belirteci olan değişkenlere atayabilmek anlamına gelmektedir. Daha net bir örnek vermek gerekirse; sayısal bir değeri metinsel bir değer taşıdığı belirlenmiş değişkene atayamazsınız. Bu yazıya ilerleyen bölümlerden sonra tekrar dönemenizi öneririm. Bahsi geçen bazı kavramlar sonraki bölümlerden sonra daha fazla anlam kazanacaktır.

Peki javada hangi tipte değişkenler vardır?

  • Primitif tipler : Primitif tipler java keyword olarak ayrılmış tiplerdir. Bunlardan sıklıkla kullanılanlar aşağıdaki gibidir.
    • boolean : true (doğru) ya da false (yanlış) değerlerini taşıyabilir. Genellikle karşılaştırma amaçlı kullanılmaktadır.
    • int : Tam sayı değerleri taşır. Bunlar 123 veya -456 gibi değerlerdir.
    • float : Noktalı sayı değerleri saklar. Bunlara örnek olarak 678.90 gibi değerler örnek verilebilir.
    • Bu tipler dışında char, double, byte, short gibi tipler de javada mevcuttur. Bu tipler özellik olarak diğer dillerle benzerlik göstermektedir.
DataTypes - Data types in Java - Edureka
Primitive tiplere dair bir tablo
  • Primitif olmayan tipler : Bu tipler javada önceden tanımlanmış veya yazılımcı tarafından oluşturulmuştur. Primitif tipler ile bunları ayırt etmenin kısa bir yolu ilk harflerine bakmaktır. Primitif tipler küçük harfle başlarken, non-primitif tipler büyük harfle başlamaktadır.
    • String : Metin değerleri taşır. Bunları tırnak içinde temsil edebiliriz. “Finlandiya” veya “Beyaz zambaklar ülkesi” buna bir örnektir.
    • Diziler : Diziler belirli tiplerde değişkenleri bir arada barındırır. Yani aynı tipten bir çok değer bir değişkenin içinde tutulmaktadır.
    • Bunlar dışında Class, Interface gibi sonraki yazılarda karşınıza çıkacak tipler de bu gruba örnek oluşturmaktadır.

Ayrıca javada primitif tiplerin non-primitif karşılıkları da vardır. Bunlar da yine ilerleyen bölümlerde değineceğiz. Ancak öncesinde temel kavramları ve javada (ve hatta bazı programalama dillerinde) genel kültür seviyesindeki bilgileri öğrenmemiz gerekiyor ki bir şeyler üretebilelim. Sonraki yazıda javada kullanılan operatörlere değineceğiz.

Merhaba Dünya!

Bir geleneği bozmayalım. Programlama dilleri öğrenilirken ilk yapılacak örnek ekrana merhaba dünya yazdırmaktır. Bu yazıda bunu ele alacağız. Örneği sadece bir java kodunu çalıştırmak olarak ele almanızı rica ediyorum. Göreceğiniz kod içerisinde anlamayacağınız bazı anahtar sözcükler olabilir. Bu yazının başarı kriteri merhaba dünya sözcüğünü editör konsolunda görebilmenizdir. Haydi başlayalım!

Eclipse kurulumunu gerçekleştirdikten sonra editörü ilk defa çalıştırdığınızda size workspace için bir lokasyon soracaktır. Kabaca workspace, sizin projelerinize dair bazı bilgilerin tutulduğu klasördür. Bu klasör ayrıca sizin kodlarınızı da saklayabilir ki genel disiplin de zaten bu yöndedir. Kendinize uygun bir workspace lokasyonu belirleyin ve editörü başlatın. Ben aşağıdaki gibi seçtim.

Ardından editör açılacak ve aşağıdaki ekran görüntüsündeki gibi bir ekranla karşılaşacaksınız. Ekran görüntüsündeki fare imlecinin altındaki işareti kaldırırsanız tekrar bu ekranla karşılaşmazsınız. Yine Welcome sekmesini gönül rahatlığıyla kapatabilirsiniz.

Gelelim ilk projemizi yaratmaya. File menüsünden New>Java Project yolunu izliyoruz.

Ardından açılacak ekranda Project name kısmına proje adı veriyoruz. Örneğe uygun olması açısından proje adını “Hello” olarak verdim. Geri kalan alanlara dokunmanıza gerek yok. Doğrudan finish ile bitirebilirsiniz.

Finish sonrası size “Modül oluşturayım mı?” diye bir soru sorabilir. Burada hayır (Don’t Create) seçeneği ile ilerleyebilirsiniz.

Projeyi boş şekilde oluşturmuş olduk.Şimdi içinde bir class oluşturmamız gerekiyor. Bunun için editörün sol tarafındaki Hello isimli, bir klasör görüntüsü ile simgelenen projemizi açıyoruz ve içinde bulunan src klasörüne sağ tıklıyoruz. Açılan menüden New>Class yolunu izliyoruz.

İlk java sınıfımızı yaratmaya çok yakınız. Name kısmına HelloWorld yazın ve imleçle gösterilen kutucuğu işaretleyin. Bu penceredeki detaylara daha sonra değineceğiz. Burayı tamamladığınızda editör size içi boş bir main methodu olan bir java sınıfı türetecektir.

Main methodu uygulamayı koşturmamızı sağlayan methoddur. Bir java programında akış main ile başlar. Biz de java dünyasına bu method içinde merhaba diyeceğiz. Aşağıda görmüş olduğunuz kod parçasının 6. satırında bu işi yapalım.

System.out.println(“Merhaba Dünya”);

Yukarıdaki ifadeyi 6. satıra eklediğimizde kodumuz şu görüntüye gelecektir.

public class HelloWorld {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		System.out.println("Merhaba Dünya");
	}

}

Şimdi de bu kodu çalıştıralım. Kodu çalıştırmak için editördeki yeşil butona basmanız yeterli olacaktır. Programın çıktısını console bölümünde Merhaba Dünya yazısıyla görmektesiniz. Java dünyasına hoşgeldiniz!

Java Öğrenin

Neden Java Öğrenmeliyim?

Java profesyonel iş hayatında ve kabul görmüş büyük yazılımların arkasında çalışan dildir. İş imkanları geniş, arkasındaki topluluk büyük ve açık kaynak kodludur. Bazı dikkate değer özellikleri listelersek;

  • Nesneye yönelik programlama – Her şey obje olarak yer alır ve miras (inheritance), sarmalama (encapsulation) ve çok biçimlilik (polymorphism) gibi kavramlar dilde doğal olarak bulunur.
  • Güçlü topluluk – Java platformu yukarıda ilettiğim gibi açık kaynaklıdır ve arkasında büyük bir gönüllü topluluğu vardır.
  • Spring framework – Bir çok dilde bir çok framework vardır. Ancak Spring gibi, programlamadaki tekrar eden kod bloklarını (boilerplate code) ortadan kaldırıp, bir çok konuda çözüm üreten bir framework javada yazılmıştır. Evet bu artık bir java öğrenme sebebi?
  • İş imkanları – Startup firmalardan, büyük finans kuruluşlarına kadar bir çok firmada java kullanılmaktadır.
  • Öğrenme kolaylığı – Java dilini temel kavramlarıyla öğrenmek kolaydır.
  • Platform bağımsız – Java uygulamaları platforma bakılmaksızın o platformdaki JVM üzerinde çalıştırılabilir.

Java İle Neler Yapabilirim?

  • Mobil uygulamalar (Özellikle Andorid)
  • Masaüstü uygulamalar
  • Web uygulamaları
  • Oyunlar
  • Ve çok daha fazlası!

Nelere İhtiyacım Var?

Bilgisayarınızda Java JDK(8+) kurulu olmalı. Editör olarak ise Eclipse IDE öneriyorum. Menüleri diğer editörlere nazaran daha temiz gözüküyor ve ben de anlatımları Eclipse üzerinden yapacağım. Kurulumları yaptıysanız başlayabiliriz!

Önemli not: Yazılar içerisinde anlamayacağınız noktalar olabilir. Bu noktaları geçip sonraki yazılara devam edebilirsiniz. İlerleyen yazılarla beraber bu noktalar daha anlamlı hale gelecektir. Yazıların içerisinde bu durumu mümkün olduğunca belirtiyorum. Bunlara denk geldiğinizde hevesiniz kırılmasın. Pratik yaparak bu durumu iyileştireceğinizden emin olabilirsiniz.