18 Ekim 2015 Pazar

JAVA'DA DİZİLER

Java'da diziler C ve C++ dan farklı olarak çalışır. Diziler içerisinde birden fazla eleman tutan gruplardır. Fakat aynı tipte eleman olması önemlidir. Bir elemanı char tipinde, diğer elamanı double tipinde olan bir olamaz..Benim ilk dizi oluşturmaya başladığım sıralarda katıldığım şeylerden biriside her zaman dizilerin 0. indeksten başladığını unutmak olmuştur. Bu çok önemlidir dizi oluşturuken her zaman indeks numarası 0'dan başlarDizilerin türleri vardır. Tek boyutlu,iki boyutlu,üç boyutlu,çok boyutlu diziler olabilir.Diziler programlamada önemli bir yere sahiptir. Bir öğrenci olarak kodlamada en çok hata gördüğüm kısmın diziler olduğunu söyleyebilirim.Şimdi ilk olarak tek boyutlu dizilerden başlayalım.

TEK BOYUTLU DİZİLER : Bir dizi oluşturmak için öncelikle istenilen tipte bir dizi değişkeni oluşturmak gerekir. Genel formülü şu şekildedir.

tip değişken adı[];
int month_days [];

Köşeli parantez açıp kapatmak dizi oluşturulduğu anlamına gelir. Dizi oluşturacaksak mutlaka bu parantezleri açıp kapatmak gerekir.

Şimdi gelelim en önemli yere ; int month_days[] şeklinde bir dizi tanımladık, fakat bu dizinin değeri şuan null'dur. Dizinin herhangi bir değeri yoktur.Diziye değer ataması yapmak için bellekte yer ayırmalı ve bunu dizi değişkenine atamalıyız. Önceden de gördüğümüz üzere new kelimesi bellekte bizim için yer ayıran kelimedir. Bunu aşağıdaki ifade ile yaparız:

month_days = new int[];==>> month_days isminde int tipinde değişkenleri olan dizi için bellekte bir yer açtık.Daha sonra dizinin elemanlarını doldurmaya başlayabiliriz.Bunu bir örnekte görecek olursak kodlar aşağıdaki gibi olur :

--BASİT BİR DİZİ OLUŞTURMA--


Yukarıdaki örnekte basit bir dizi oluşturduk.Resmin üzerine tıkladığımız zaman sayfa büyüyecek ve her şeyi daha açık bir şekilde göreceğiz.Programın amacı diziler yardımıyla nisan ayının kaç gün olduğunu göstermektir.Dikkat ederseniz indeks 0'dan başlamıştır.  
**NOT** : Dizi tanımlarken her zaman bellekte new adında bir değişken tanımlamaya gerek olmayabilir. Bunu bir örnekte görecek olursak:

--NEW OLMAYAN DİZİ--

Bu örnekte dizi oluşturulduktan sonra teker teker indis açıp yazmak yerine, Dizinin tüm değerlerine atama süslü parantez içinde yapılmıştır. Değişken ataması yapmak gibi düşünebiliriz. Değişken ataması yaparken de new sözcüğü oluşturmamıza gerek yoktur çünkü ilk yazdığımız zaman değişkenin değeri bellidir."null" a eşit değildir.

Dizilerde en önemli konulardan biriside for loop ve diziyi bir arada kullanmaktır.Programlarda fazlaca kullanacağız. Biz öğrenciler genelde bu yapıyı oluşturmakta zorluk çekeriz. Şimdi aşağıda bir örnekte bunu inceleyelim.

--FOR VE DİZİ BİRLİKTE KULLANIMI--
Yukarıdaki programda 5 öğrencinin notlarını tutan bir dizi oluşturulmuştur.Dizi oluşturulup direk değer ataması yapıldığı için new kelimesi kullanmaya gerek yoktur.Dizimizi oluşturduktan sonra ortalama alınca bir değer ortaya çıkacağı için bu değer double değişkeninde result olarak adlandırılmıştır ve oluşturulduğu zaman belli bir değeri olmadığı için 0 a eşitlenmiştir.Eğer biz sonucu 0'a eşitleme yapmasaydık program dizinin içinden rastgele bir sayı seçip bunu sonuç olarak gösterebilirdi biz 0 yazarak buna engel olduk. Daha sonra for döngüsünü dönmesine yardımcı olan int tipinde i değişkeni tanımladık. Daha sonra for döngümüzü kurmaya başladık.Döngünün içinde i=0 değerinden başlayıp 5 değerinden küçük oluncaya kadar dizinin içinde dolansın ve eline geçen her elemanı bir önceki toplam değerin üzerine eklesin dedik.Örneğin 4 öğrencinin notları toplamı 100 olsa 5. öğrenciye geldiği zaman bu 100 üzerine 5. öğrencinin notunu toplar.

result =result + nums[i]==>>Nums i. öğrencinin notunu temsil eder.

En sonunda elimizde öğrencilerin notları var bunların toplamı var şimdi sıra geldi bunların ortalamasını hesaplamaya bunu da aşağıdaki kod ile yaparız:

System.out.println("average is" + result/5);==>>Buradaki result/5 toplamı 5 e bölüp ortalama hesaplar ve ekrana yazar.

2 BOYUTLU DİZİLER : Bu dizi türünün özellikleri de diğerleri ile aynıdır. Sadece 2 boyutlu olduğu için tanımlanması değişiklik gösterir.

int twoD [][]= new int[4][5];

Buradaki ilk 2 köşeli parantez dizinin 2 boyutlu olduğunu gösterir. new ile belekte yeni yer açtıktan sonra dizinin boyutları yazılır. Kısacası 2 boyutlu dizileri matris gibi düşünebiliriz. Yukarıdaki dizide 4 e 5 boyutundaki matris verilmiştir.İlk köşeli parantez satır sayısını,ikinci köşeli parantez sütun sayısını verir.
2 boyutlu diziler dendiği zaman birçok programda direk döngüler akla gelir çünkü bu dizinin içinde dolanmak için 2 tane for loop yapmak gerekir. Şimdi bu dizi ve for loop kullanımını bir örnekle açıklayalım.

--2 BOYUTLU DİZİ VE FOR LOOP--
Bu dizilerin içinde for loop ile dolanmak biz öğrencilerin en çok zorlandığı yerdir. Karışık ve detsylı bir kısımdır.Üstteki kodu açıklayacak olursak;
İlk olarak 2 boyutlu 4 e 5 boyutunda bir dizi tanımladık. new kelimesi ile bellekte yeni yer açtık.
for döngüsünün içinde dolanacak olan değişkenlere i ve j dedik k değişkeni ise değer kısmıdır yani kod okundukça matrisin içini dolduran eleman k dır. Ve bu değerleri ilk değer olan 0'a eşitledik çünkü döngüler de 0 dan başlayacak.Şimdi sırada anlaşılması en zor olan kısım var :

for(i=0;i<4;i++)
for(j=0;j<5;j++){
twoD[i][j]=k;
k++;

}

for(i=0;i<4;i++){
for(j=0;j<5;j++)
System.out.print(twoD[i][j]+ " ");
System.out.println();
}

İlk for döngümüzü başlattık bu döngü satır için dönen döngüdür. İkinci döngüde sütun için döner. İç içe 2 döngüde mantık şudur: Kod sırasına göre gidersek. bilgisayar ilk döngüye geldi. Burdaki for loop okundu ve bize ilk satırı gösterdi sonra alttaki loop'a indi burdada ilk sütunu gösterdi. Şuan elimizde okunanlar olarak satırın ilk elemanı, sütunun ilk elemanı var. Sıra geldi değer yazmaya bu değer yazma işini k nın yaptığını yukarıda açıklamıştık. twoD[i][j]=k kodunda 0. satır ve 0. sütunun ilk değerine k nin ilk değerini yazdı yani o da 0.Daha sonra bilgisayar alt satıra atladı ve k nın değerini bir artırdı.
Bundan sonraki adımda tekrar en üstteki loop'a çıktı ordan satırın 1. elemanını aldı, aşağıdaki loop'a indi ordan sütunun 1. elemanını aldı ve  twoD[i][j]=k bu kodla 1. satır 1. sütun elamnının içini doldurdu ve k nın değerini tekrar 1 artırdı. Böyle böyle döngüler içindeki şartı sağlayana kadar döngü.
Daha sonra sıra ikinci döngülere geldi bu döngülerin olmasının sebebide belilenen bu 4 e 5 matrisi ekrana yazdırmak(System.out.print) ifadelerindende anlaşıldığı gibi. ilk dönüşte 0. satır 0. sütunu olduran eleman ekrana yazıldı,2. dönüşte 1. satır 1. sütunu dolduran elaman ekrana yazıldı böyle böyle resimde görülen ekran çıktısı oluştu.

**NOT** :Tekrar hatırlamak gerekirse neden 0. satır ve 0. sütundan başladık ? Bunun sebebi kaç boyutlu dizi olursa olsun diziler her zaman 0. indisten başlar.

ÇOK BOYUTLU DİZİLER : Çok boyutlu dizilerde de dizi mantığı aynıdır. dizinin içine dolanırken sadece 2 boyutludan farklı olarak 3 tane loop açarız. tanımlanma şeklide şöyledir:

int three[][][] = new int[3][4][5];

En, boy, yüksekliğe sahip bir şekil düşünebiliriz.Örneğin; Dikdörtgenler prizması.Kodlama mantığı da 2 boyutlu diziler ile aynıdır. Çok boyutlu diziler çok fazla kullanılmaz genelde tek ve 2 boyutlu diziler kullanılır. Ama kullanılan programlarda daha öncede belirtildiği gibi mantık aynıdır.

Şimdide dizi,if ve for yapılarını ele alan güzel bir örnek yapalım:
--IF/DİZİ/FOR LOOP--
Yukarıdaki örnek çalışmada görüldüğü üzere 2 tane for döngüsü kullanılmıştır. Bu şekilde 2 ve daha fazla döngünün kullanıldığı kodlara nested loop (iç içe döngüler ) adı verilir. İç içe döngülerde temel kural en içteki döngü en önce tamamlanır.Şimdi yazdığımız kodu detaylı şekilde inceleyelim.

Ekran çıktısı şekildeki gibi olan kodu yazmak için ilk ihtiyacımız olan şey; elemanlarının hepsi 0 olan biz dizidir. Sonra bu diziyi ekran çıktısına göre  değiştireceğiz. Görüldüğü üzere int değerinde elemanlarının hepsi 0 olan bir dizi tanımladık.Daha sonra 2 tane döngü kullanacağımız için döngülerin içinde kulanılacak olan değişkenleri tanımladık. Daha sonra ilk for döngümüzü açtık, bu döngü dizinin elemanlarının içinde dolanıp kontrol yapacak olan döngüdür. Bu döngü 0. indisten başlayıp 9. indise kadar teker teker dizinin tüm indekslerinde dolanıyor ve kodda yazan if bloğu ile indeksleri dolduran rakamları kontrol ediyor. Eğer dizinin indeksindeki rakam 0 ise onları teker teker 1 e çeviriyor.

2. for döngüsü ise kaç satır yazılacağını kontrol ediyor bu kodda 10 satır yazılması ve her satırda bir indeksin daha 1 yapılması istenmiş. Ve sonuç olarak ekran çıktığı şekildeki gibi olan program ortaya çıkmış. Şimdi de başka bir nested loop örneğine bakalım.

-NESTED LOOP-

-EKRAN ÇIKTISI-


Ekran çıktısı üstteki gibi olan programı adım adım nasıl yazdığımızı inceleyelim. İç içe loop kullanacağımız için 2 tane değişken tanımladık x ve y.
Daha sonra x için dönecek olan loop'umuzu oluşturduk. x ile oluştulan döngü 1 den başlayacak ve 5 e eşit olana kadar dönecek ve her dönüşünde ekrana 1 er tane x değeri yazacak sonunda elimizde 5 tane x değeri olacak.
İçteki loop'a bakacak olursak bu y değerlerini belirleyen loop'dur. x loop'u her döndüğünde y loop'u da x'in her dönüşü için 3 kez dönecek ve belirtilen değerleri yazacaktır.

JAVA'DA TÜR DÖNÜŞÜMLERİ(CASTİNG)

Her programlama dilinde olduğu gibi java'da da tür dönüşümleri yapılır.Örneğin; int tipinde tanımlanmış bir sayıyı byte tipine otomatik olarak dönüştürmek imkansızdır.Çünkü int tipi byte tipinden daha çok alan kaplar. Bu tür dönüşümlerine günlük hayatımızdan şöyle örnek verecek olursak; elimizde bir bardak su var ve boş bir tencere var bu bir bardak suyu tencereye boşaltırsak tencere o suyu alır. Fakat bir tencere suyu bir bardağın içine boşaltmaya çalışırsak bardak yeterli gelmeyecektir. İşte bunun gibi byte küçük bir değer olduğu için int değişkenindeki sayıyı tutmak için yeterli alana sahip değildir. Bizler bunun için javada tür dönüşümü yani casting durumunu öğrenmek zorundayız. Casting olayının genel yapısı şöyledir.

(hedef-tip) değer
 int a;
 byte b;

 b = (byte)a; Burada görüldüğü gibi yukarıdaki yapıyı kullanarak bir tür dönüşümü yaptık. int olarak atanmış a ifadesini byte olarak atanmış olan b ifadesine dönüştürdük yani int değerini byte değeri haline getirdik.

--TÜR DÖNÜŞÜMÜ--



Yukarıdaki kodda tür dönüşümünün başka bir şeklini inceleyelim. Resmin üzerine tıkladığınız zaman resim büyüyecek ve yorum satırlarında kodun ne demek istediğini anlayacaksınız.

JAVA'DA OPERATÖRLER

Her programlama dilinde olduğu gibi java da da çarpma,bölme,toplama,çıkarma işlemlerini yapmak için belirli aritmetik operatörler kullanılır.Kod dizini diğer dillerde olduğu gibidir.Örnek kodlamaya geçmeden önce kullanacağımız belli başlı aritmetik operatörleri inceleyelim.

OPERATÖR                                         SONUÇ 
       +                                                     Toplama
       -                                                      Çıkarma
       *                                                     Çarpma
       /                                                      Bölme
      %                                                     Mod
     ++                                                     Artırma
     +=                                                     Toplama Ataması
     -=                                                      Çıkarma Ataması
     *=                                                     Çarpma Ataması
     /=                                                      Bölme Ataması
    %=                                                     Mod Ataması
    --                                                        Eksiltme

**NOT** : Aritmetik operatörleri "boolean" tipleri üzerinde kullanamayız.Ancak int tipinin bir alt kümesi olan "char" tipi üzerinde kullanabiliriz.Kodları çalıştırmak istiyorsak bu kurala dikkat etmemiz gerekir.Ben kodlamada bu hatayı yaşamıştım :)..

Aritmetik operatör tiplerine baktıktan sonra şimdide bu tiplerin kodlamada nasıl kullanıldığına bakalım.Bu kodumuzda farklı olarak negatifine değiştirme kodu görelim.

--ARİTMETİK OPERATÖR KULLANIMI İLE İŞLEMLER--
Yukarıdaki kodda aritmetik operatörler ile işlem yaptırma kodları yazdık. Programın bizden ilk istediği şey işlem yapılacak sayıları tanımlamak int türünde a,b,c sayıları tanımladık.Float türünde x,y sayıları tanımladık.Burada dikkat edilmesi gerek şey float  değişkenine atanan sayıların yanında "f" harfi oluşudur. Bunun sebebi sayının float olduğunu belirtmektir.Neden belirtiriz ? Şimde sayının yanında "f" olmadığını düşünelim eski öğrendiğimiz bilgilerden hatırlarsak bu sayıya bir "double" da diyebiliriz sonuçta "double" değişkeni de virgüllü sayıları içine alır.İşte bu yüzden programımızda sayısal veri hatasına düşmemek için yanına "float" olarak belirttik. Daha sonra bu elde ettiğimiz bilgileri ekrana System.out.println kodu ile teker teker yazdırdık.En sonda dikkatimizi çeken yer int ve float türünde sayılar tanımlayıp ekranda bunların negatif değerlerini gördüğümüz. Bunuda ;
int negX= -X kodu ile yaptık bu kod tanımadığımız sayıları negatifine çevirir. Y sayısı içinde aynı durum geçerlidir.Şimdi aşağıda kodun çalıştıktan sonra ekran görüntüsüne bakalım.

--ÜSTTEKİ KODUN EKRAN ÇIKTISI--
ARİTMETİK OPERATÖRLERDE ARTIRMA VE AZALTMA OPERATÖRÜ

Bu operatörler üstteki tabloda gösterdiğimiz "++" ve "--" operatörüdür. Sayının değerini 1 artırıp, 1 azaltmaya yarar.Bu işlemler işlemci tarafından desteklendiği için çok daha hızlı çalışır.Bu operatörlerin sağda yada solda olmaları tek başına kullanıldıklarında farketmez.Ancak bir ifade parçası içinde oldukları zaman değer değiştirebilirler.Şimdi bu işlemi örnek bir kod üzerinde
inceleyelim:

--ARTIRMA/AZALTMA--
Görüldüğü gibi sayıların yanlarında olan artıma azaltma operatörleri sayıları artırarak ve azaltarak tekrar ekrana bastı.

Şimdide kodlamalarda çok kullanılan anlaşılması karmaşık olan farklı bir atama tipini ele alalım.

--ARTIRMA/AZALTMA OPERATÖRÜNE YENİ DEĞERE GÖNDERME--
Bu kodu çok dikkatli incelememiz gerekir.İlk olarak sayi1 ve sayi2 adında 2 sayı tanımladık. Daha sonra bu sayıları işleme soktuk.Kodları daha yakından incelersek:

int sayi3 = sayi++; ==>>Bu kodda sayi3 olarak yeni değişken tanımlamış ve bu değişkene değer ataması yapılırken ilk olarak üstteki sayi1 in değeri alınmış daha sonra bir artırılmıştır.

int sayi4 = ++sayi2; ==>>Bu kodda sayi4 olarak yeni değişken tanımlanmış ve bu değişkene değer ataması yaoılırken ilk olarak sayi2 nin değeri bir artırılmış sonra, değişkene atama yapılmıştır. 

**NOT** :Üstte kırmızı olarak yazılan 2 ifade arasındaki fark çok önemlidir. Önceden bildiğimiz üzere kodlar yukarıdan aşağı ve soldan sağa çalışır. Yani bu kodda bilgisayar ilk olarak sayi1 ve sayi2 değerlerini okuyacak sonra alta inecek sayi3 diye bir değişken görüp bunun içine ilk olarak sayi1 in değerini atayacaktır ve ekrana sayi3 değeri olarak 7 yazdıracaktır.(Artırma işlemini içine değer ataması yaptıktan sonra gerçekleştirecektir.)Daha sonra bir alt satıra inecek burda sayi4 adında bir değişken görecek ve bunun değerini doldururken ilk gördüğü kod "++" olaraktır yani ilk olarak sayi2 değerini bir artırıp sonra değişkenin değerini atayacaktır. Yani sayi4 değeri 8 olacaktır.

ARİTMETİK ATAMA OPERATÖRÜ

Javada 5 tane aritmetik atama operatörü vardır. Bunlar:  +=(toplayarak ata)  -=(çıkartarak ata)
*=(çarparak ata)  %=(bölerek ata) operetörleridir. Bunlar işlemlerin tek seferde yapılmasını sağlar.
Örnek bir kodlamada görecek olursak :

--ARİTMETİK OPERATÖRLER--
Yukarıdaki koda bakacak olursak: ilk olarak bilgisayar int değişkeninde 25 ve 15 sayılarını okur. Daha sonra alt satıra iner. Alt satırda aritmetik atama operatörü kullanılmıştır. a+=b;
demek a sayısını b ile topla çıkan bu toplamı tekrar a sayısına ata demektir. Normalde bu ifade 2 satır kodla da yapılabilir program yine çalışır. Fakat bizler kolaylık olsun diye bu ifadeleri kullanırız.Bölme,çarpma,çıkarma işlemlerindede mantık böyledir sadece atama operatörü değişir.

İLİŞKİSEL ATAMA OPERATÖRLERİ :

Programlarda genel olarak 6 tane ilişkisel atama operatörü kulanacağız. Bunlar aşağıdaki tabloda gösterildiği gibidir.

==        eşittir
<          küçüktür
>          büyüktür
<=        küçük eşittir
>=        büyük eşittir
!=         eşit değildir
| |          veya
&&      ve

İlişkisel operatörler genel olarak programlarda "ıf-else if" koşul yapıları içinde kullanılır. Aşağıda bu koşul yapıları içinde kullanılan ilişkisel operatörleri kod üzerinde inceleyelim. Bu örnekte şimdiye kadar öğrendiğimiz birçok şeyi kullanalım ve bir arada görelim :

--ÜÇGEN TÜRÜNÜ BİZE VEREN PROGRAM--

Yukarıdaki programda import scanner sınıfı kullanmayı,(import java.util.Scanner)değişkenlerin içine değer yazdırmayı(x = tara.nextInt();) ve koşul yapıları içinde ilişkisel operatör kullanmayı (==  && != gibi ) tekrar hatırlayalım.

En başta bizden belli değerler girmemizi isteyen bir program ar ilk aklımıza gelmesi gereken şey Scanner sınıfının programa eklenecek olmasıdır ve bunu import java.util.Scanner; kodu ile yaparız.

Daha sonra scanner tara nesnesi için bellekte belirli bir yer oluşturmamı gerekir. Bu işlemide
Scanner tara = new Scanner(System.in); kodu ile sağlarız. Şimdi sıra üçgenimizin kenar uzunluklarını vermeye geldi her bir kenar uzunluğu tamsayı cinsinden olacağı için "int" değişkeninde 3 tane x,y,z tanımlarız. Bu sayıları 0 a eşitlememizin amacı bir başlangıç değeri belirtmektir. Aksi takdirde derleyici uyarı verir ve başlangıç değeri girmediğimizi söyler.Bu işlemi birçok örnekte yapacağız.

Şimdi sıra geldi kullnıcıdan x y z üçgen kenar uzunluklarını istemeye bunları geçmişte de bildiğimiz üzere System.out.println("y kenarını giriniz :"); kodu ile yaparız her bir kenarı aldıktan sonra her bir kenar için  y = tara.nextInt(); kodlarını kullanarak sayıları int değer olarak aktarması gerektiğini söyleriz.

Şimdi sayıları girdik bilgisayara bunları kayıt etti sıra geldi üçgenin türünü belirlemeye : bunu nasıl yapabiliriz ? hepimizin bildiği gibi kenar sayıları birbirine eşit ise eşkenar üçgen, 2 kenarı birbirine eşit ise ikizkenar üçgen ve tüm kenarları birbirinden farklı ise çeşitkenar üçgen deriz.Görüldüğü gibi durumu türkçe olarak ifade ederken bile ise ifadesini kullandık yani javadaki karşılığı "if-else if-else"
Şimdi kullanacağımız koşulda belli sıra geldi kenarları kıyaslamaya bunuda "ıf else-if" blokları içinde ilişkisel operatörler kullanarak yaparız.


                 if(x==y && y==z ){
System.out.println("üçgen eşkenar üçgendir");
}
else if(x!=y && y!=z && x!=z){
System.out.println("üçgen çeşitkenar üçgendir");
}
else
System.out.println(" üçgen ikizkenar üçgendir");
}

Bu kod bloğu bize ilişkisel operatörlerin kullanımını gösterir. Örneğin : ilk bloğa bakacak olursak if koşulu içinde " x==y && y==z" derken aslında "x=y=z" demek istemiştir yani üçgenin eşkenar üçgen olduğunu demek isteriz ve bunuda if bloğu içinde yaparız.(x=y ve y=z ise)

İkinci kod bloğunda else if koşul içinde kenarların birbirine eşit olmadığını belirtiriz.(x eşit değil y ve y eşit değiz z ise) üçgenimiz çeşitkenar üçgendir.

Üçüncü kod bloğu ise else ifadesini gösterir, koşul programlarında else ifadesinin yanı boş bırakılır. Çünkü yukarıdaki durumlar gerçekleşmediği zaman geriye tek durum kalmıştır oda else in gövdesinde belirtilir. Bu programda geriye kalan tek durum üçgenin ikizkenar oluşudur.

**NOT**: if bloğu içerisinde atama yaparken iki tane eşittir kullanırız (==) aksi takdirde kodumuz çalışmaz. Bu hatada benim yaşadığım hatalardan birisi :)..

MANTIKSAL OPERATÖRLER 

Bu operatörler "boolean" tip değişkeninde tutulur. Kodlamada belli ifadelerle gösterilir. Bunları yazacak olursak :

&&(AND operatörü) : Bu operatörün sağında ve solunda yazan ifadeler true olursa, sonuçta true olur. Onun dışında tüm durumlarda sonuç false olur.

| | (OR OPERATÖRÜ) : Bu operatörün sağındaki ve solunda yazan ifadeler  false olursa sonuç false olur onun dışında sonuçların hepsi true olur.

^ (XOR OPERATÖRÜ) : Bu operatörün sağında ve solunda yazan ifadeler aynı ise(her ikiside true yada her ikiside false) sonuç false olur.İfadeler farklı olduğu zaman(biri false biri true ) sonuç true olur.

!(NOT OPERATÖRÜ) : Bu ifade matematikteki değilini almakla aynıdır. Yani kendinden sonraki gelen ifadenin ters halini alır. True ise false, false ise true dönüşümü yapar.

Şimdi bu öğrendiğimiz operatörleri bir örnek kodla anlamaya çalışalım.

--MANTIKSAL OPERATÖRLER--
Yukarıdaki kodlarda bu ifadelerin kullanımı açıkça verilmiştir. İncelemek için resmin üstüne tıklayıp büyütmek yeterlidir.








17 Ekim 2015 Cumartesi

JAVA'DA KLAVYEDEN BASİT GİRİŞ-ÇIKIŞ İŞLEMLERİ

   Bu işlemler genel olarak klavyeden veri girilmesi, girilen veriye işlemler yaptırılıp ekran çıktısı alınması gibi işlemlerdir. Bu konuda kodlama kısmına girmeden önce bilinmesi gerek belli terimler vardır.

PACKAGE KAVRAMI : Şimdiye kadar yazdığımız tüm kodlarda dikkatinizi çektiyse package kavramı vardır. Kullandığımız sınıflar packagelerin içinde yer alır.(Javada proje oluştururkende packagelere sağ tıklayıp içine yeni bir sınıf açıyoruz)

İMPORT KAVRAMI :Javada en önemli kavramlardan biriside import kavramıdır.BİR SINIF İÇİNDE  KENDİSİ İLE AYNI PACKAGE DE OLMAYAN BİR SINIFI KULLANACAKSAK KENDİSİNDEN ÖNCE O SINIFI "İMPORT" ETMELİYİZ.

Kullanılışı : import paketAdı.sınıfAdı; şeklindedir.
                   import java.util gibi.

SCANNER KAVRAMI : Şimdiye kadar fark ettiyseniz sürekli sayıları programda verdik, yani program bizden hiç sayı girişi istemedi. Zaten yazdığımız kodlarda istesekte sayı girişi yapamazdık çünkü bunun için gerekli olan sınıf tanımlı değildi. İşte bizim ihtiyacımız olan bu sınıf java.util.scanner sınıfıdır. Bu sınıfa ait olan özelliklerin kullanılması için yani sayıları bizden girmesini isteyen program yapmak için bu sınıfın import edilmesi gerekir. Bunu ilerleyen örneklerde çok rahat anlayacağız.Şimdi scanner sınıfına ait belli kodlara bakalım :

next() : klavyeden girilen ifadenin ilk kelimesini okur.
nextline() :klavyeden girilen ifadenin hepsini okur.
nextInt() :klavyeden girilen ifadeyi integer tipine çevirir.
nextFloat() : klavyeden girilen ifadeyi float tipine çevirir.
nextDouble() :klavyeden girilen ifadeyi double tipine çevirir.Bu kodları kodlamalarımızda sürekli kullanacağız.

BİLGİ GİRİŞ ÇIKIŞ İŞLEMLERİ
Bilgi giriş çıkışında System.in.out.err ifadeleri kullanılmaktadır.
System.in: klavyeden veri girileceğinde.
System.out : mesajların işlemlerin sonucunun ekranı yazdırılacağını.
System.err : hata mesajlarında kullanılmaktadır. Mesajları kırmızı yazdırır.

Scanner, bilgi giriş çıkış kavramlarınıda öğrenince,şimdiye kadar yapmış olduğumuz tüm örnekleri içine alan bir örnek program yapalım:

--VİZE/FİNAL NOTLARI GİRİLEREK BAŞARI DURUMUNU GÖSTEREN PROGRAM--
Programa baktığımız zaman ilk olarak düşünmemiz gerek şey bizden bir giriş istemesi yani vize ve final notumuzu girmemizi istiyor o yüzden ilk düşünmemiz gereken şey scanner sınıfını import etmek olmalıdır.

import  java.util.Scanner ; kodu ile scanner sınıfını import etmiş olduk.

**Scanner tara = new Scanner(System.in); ==>>Bu kod nesne tabanlı programlamalarda bizim için çok çok önemlidir. Aynı kod C# dilindede karşımıza çıkacaktır.Bu kodda agirilen sayıları taraması için tara isminde bir scanner nesnesi oluşturulmaktadır. tara kelimesini bir verdik say, oku gibi kelimelerde kullanabilirdik. Buradaki "new" ifadesi bu nesne için bellekte yeni bir alan açmaktadır. Java nesne tabanlı bir programlama olduğu için mutlaka bellekte bu nesne için yer açılmalı ve new ifadesi kullanılmalıdır. Bu ifadeyi hemen hemen her programda kullanacağız.

Daha sonra int değişkeninde vize ve final notlarını tanımladık birde bunların hesaplanmasıyla ortaya çıkacak olan double türünde ortalama değişkeni tanımladık neden double ? cünkü büyük ıhtimal ile sonuc virgüllü bir sayı gelecektir.

Sonra System.out.println ifadesi ile ekrana vize notunu girmesi gerektiğini söyledik.

**vize = tara.nextInt(); ==>>Bu kod ile klavyeden girilen sayıyı int tipinde vize değişkenine atadık.
**final = tara.nextInt() ==>>Bu kodda da aynı işlemi yaptık klavyeden girilen sayıyı final değişkenine int olarak atadık.

Şimdi elimizde bir vize bir final notu var sıra geldi bunları belli yüzdelerde kullanıp ortalama hesaplamaya.

ortalama = vize*0.4+final*0.6;==>>Bu kod ile vizenin %40 ı ile finalin %60 ını topladık ve ortalama adlı değişkene atadık.

Vize final notları elimizde, ortalaması da elimizde sıra geldi ders başarısına bunun içinde geçmişte öğrendiğimiz "ıf else" koşul ifadelerini kullanırız. Programda görüldüğü üzere ıf parantezleri içerisine belirli bir koşul yazıyoruz.İlk koşulumuz (ortalama>50) ise öğrenci dersten geçmiştir. Değilse(else) öğrenci dersten başarısız olmuştur.Ve sonucu ekrana yazdırırız. Bu kadar :) :) :)...

Giriş çıkış işlemlerini anlamak için bizler gibi yazılıma yeni başlayan öğrencilere tek örnek kod yetmiyor birkaç tane daha örnek kodlara bakalım :)...

JAVA'DA DÖNGÜLER

Her programlama dilinde olduğu gibi java da da döngüler çok önemli bir yere sahiptir. İstediğimiz birçok şeyi döngüler yardımıyla yapabiliriz. Başlıca 3 çeşit döngü türü vardır. Bunlar while,do while,for döngüleridir.
ilk olarak "while" döngüsünden başlayalım.

WHİLE : While döngüsü javanın en temel döngü ifadesidir. Kodlar belirtilen koşulu sağladığı sürece tekrar tekrar çalıştırılır.Temel yapısı aşağıdaki gibidir :

while(koşul)
{
   koşul sağlandığı sürece bu kısım tekrar tekrar çalıştırılır
}

Şimdide while döngüsünü bir örnekte görelim :

--BASİT BİR WHİLE DÖNGÜSÜ--
Ekranda görülen programı açıklayacak olursak: programda ilk olarak n sayısına  int olarak 10 değeri atanmıştır. Bu sayımızın 10 dan başlayacağını ifade eder. Daha sonra alt satır okunduğu zaman while döngüsü içinde bir koşulla karşılaşırız. Bu koşul n sayısı 0 dan büyük olduğu sürece döngüyü gerçekleştır, satır atlayarak ekrana yaz ve ekrana her yazıştan sonra n in değerini bir azalt demektir.
 Kısaca n değeri 0 a eşit yada küçük olduğu zaman döngü durur çünkü şartı sağlamaz.

DO-WHİLE DÖNGÜSÜ : Bu döngü diğer döngülerden biraz farklıdır. Farklı yanı koşulu en sonda kontrol etmesidir. Yani döngü koşulu kontrol edene kadar kodlar en az bir kere çalışmış olur.(Programlamada kodlar yukarıdan aşağı çalışır). Bu döngünün genel yapısı şöyledir:

do
{
    çalıştırılan kod
}
while(koşul);

**NOT**: Bu döngüde dikkat edilmesi gereken en çok hataya düşüren şey diğer döngülerden farklı olarak noktalı virgül kullanılmasıdır.Bu döngüde mutlaka kullanılmalıdır.Şimdi örnek bir do-while döngüsü yaparak döngümüzü daha iyi anlayalım :

--DO/WHİLE DÖNGÜSÜ--

Bu program yukarıdaki "while" döngüsü ile yapılmış olan sayı saydırma işleminin do "while" ile yapılmış halidir.İlk olarak int =10 olacak şekilde bir değişken tanımladık, kodlarımız çalışmaya başladı sonra alttaki do yapısına iner do scope larının içinde adından da anlaşılacağı üzere yapılması gereken iş belirtilir. Bu kodda do yapısı bizden n 10 dan başlayarak birer azaltarak ekrana yazdırmasını istemiş, daha sonra koşul ifadesi gelir, koşulda yani "while" da n in en son hangi sayıya kadar gideceği belirtilmiş bu kodda en sıfıra eşit yada küçük olana kadar "do" döngüsü içindeki işi yapmasını söylemiş.

**NOT** :SCOPE demek programlamada ve javada her şey demektir. "scope" bir döngünün yada ifadenin geçerli olduğu aralık demektir. Her döngüde belirli bir "scope" aralığı vardır. Bu "scope" dışına çıkıldığı zaman kodlar çalışmaz. Başından beri yapılmış olan süslü parantez açıp kapama işlemi bu yüzdendir.İlerleyen zamanlarda "scope" mantığını detaylı kodlarda daha rahat göreceğiz.

FOR DÖNGÜSÜ : While ve do-while döngülerine göre for döngüsü daha kolay anlaşılır bir görünüme sahiptir. For döngülerinde nereden başlayacağı, nereye kadar gideceği, sağlanacak şart hepsi tek parantez içinde ifade edilir. For döngüsünün genel yapısı şöyledir:

for(başlangıç değeri; koşul; artırma-azaltma)
{
   çalışacak olan kısım
}
For döngüsü içinde 3 tane ifade yer almalıdır. Şimdi for döngüsünü bir örnekle daha rahat görebiliriz;

--FOR DÖNGÜSÜ--
Yukarıdaki kod diğer döngülerde verilen örneğin aynısının for ile yapılmış halidir. İlk olarak int n diyerek bir değişken belirledik. Daha sonra for döngüsünün içine girdik, For da belirtilmiş olan 3 şartı teker teker geçtik.(n=10 dan başlayacak, n sıfırdan büyük olduğu sürece döngü devam edecek, n değerini her seferinde bir azaltacak). n sıfırdan küçük değerler aldığı zaman döngü duracaktır.

**NOT** :For döngüsünden döngü sonuna kesinlikle nokta koyulmaz.

NESTED LOOP: İç içe for döngüsünün kullanıldığı programların genel ismi nested loop'dur. Nested loop larda genel kural en içteki döngü ilk olarak tanımlanır. Nested loop mantığını aşağıdaki örnekle daha iyi anlayabiliriz.

Bir nested loop örneğine bakalım.

-NESTED LOOP-

-EKRAN ÇIKTISI-


Ekran çıktısı üstteki gibi olan programı adım adım nasıl yazdığımızı inceleyelim. İç içe loop kullanacağımız için 2 tane değişken tanımladık x ve y.
Daha sonra x için dönecek olan loop'umuzu oluşturduk. x ile oluştulan döngü 1 den başlayacak ve 5 e eşit olana kadar dönecek ve her dönüşünde ekrana 1 er tane x değeri yazacak sonunda elimizde 5 tane x değeri olacak.
İçteki loop'a bakacak olursak bu y değerlerini belirleyen loop'dur. x loop'u her döndüğünde y loop'u da x'in her dönüşü için 3 kez dönecek ve belirtilen değerleri yazacaktır.

BREAK KAVRAMI : "Break" kavramının Türkçedeki anlamı kırmaktır. Programlama dillerinde bu kavramın anlamı ise bir döngünün devam etmesini engellemek döngüyü durdurmaktır. Yani bir döngü devam ediyorsa break deyimiyle karşılaştığı zaman döngü orda durur ve bir alt satırdaki kod'a geçilir. Şimdi bunu bir örnekle görelim :

-BREAK DEYİMİ-

-EKRAN ÇIKTISI-

Yukarıdaki  programda bizden sayılar girilmesi istenmiş girdiğimiz sayılar negatif olana kadar giriş almaya devam etmiş negatif olunca döngüden çıkmıştır (break). Şimdi programı daha yakından inceleyelim.
İlk olarak ortalama,sayı,sayaç adında değişkenler tanımladık.Programın sağlıklı çalışması açısından toplam ve sayac değerlerini 0'a eşitledik. System.out.println kodu altında programın bizden istediğini kullanıcıya açıkladık. Döngü olarak "while" kullanmayı tercih ettik. while döngüsünü başlattık döngü her döndüğünde bizden bir sayı girmemizi isteyecek ve bunu sayi = giris.nextInt(); kodu ile hafızaya aldık. Programda bizden istenen negatif sayı girene kadar döngünün devam etmesi bu kontrol kısmını if bloğu ile yaptık. If bloğunun koşul kısmına sayi<0 diyerek kontolümüzü yaptık. Eğer girdğimiz sayı 0 dan küçük olursa kulandığımız break komutu ile döngüden çıkılacak ve program sayıların toplamını, ortalamasını kaç sayı yazıldığını hesaplayıp bize gösterecek. Görüldüğü üzere break komutunu döngüyü sonlandırmak için kullandık.
toplam += sayi; Bu kod gelen her sayıyı toplam ifadesinin üzerine toplayarak toplama eşitle demektir.Aynı kod toplam= toplam+sayi şeklinde de yazılabilir. sayac değeri de giriş yaptığımız sayıların kaç tane olduğunu kontrol eder her girişte sayacın değeri bir artar ve ortalama hesaplanırken toplamı sayaca böldüğümüz zaman sayıların ortalaması kolaylıkla hesaplanır. Son olarak tüm bu veriler ekrana yazdırılır.

CONTİNUE KAVRAMI : Continue break kavramının tam tersi anlam ifade eder. Biz break ifadesini döngüyü sonlandırmak için kullanırken, continue ifadesini devam ettirmek için kullanırız. Şimdi bunu bir örnekte inceleyelim.

-CONTINUE DEYİMİ-

-EKRAN ÇIKTISI-
Yukarıda bizden belli bir limit sayısı isteyerek bu sayıların içinden 4 e bölünme kontrolü yaparak bunları ekrana yazan ve toplamını bulan programı yazmamız istenmiş. Şimdi daha yakından inceleyecek olursak:
İlk olarak kullanacağımız değişkenleri tanımladık. Sonra programın bizden ne istediğini belirten bilgilendirme kısmını yazdık. Bu programı yazarken for kullanmayı tercih ettik. for ve if yapısı ile kontrol bloğu oluşturdu. For döngüsü belirlediğimiz üst limit değerine kadar olan sayıları tek tek dolanacak ve ıf ile bunların 4 e bölünüp bölünmediğini kontrol edecek. eğer 4 e bölünmüyorsa döngü continue deyimi ile başa alacak,4 e bölünüyorsa aşağıdaki kod blokları çalışacak 4 e bölünmeyen sayıları toplayıp ortalamasını alıp ekrana yazdıracak. Buradaki if (a % 4 != 0) if koşulunun anlamı a sayısının 4 e bölümünde  kalan 0 a eşit değilse devam et demektir. " a%4 a" sayısının 4 e bölüünden kalanı ifade eder. 


15 Ekim 2015 Perşembe

JAVA DİLİNE GİRİŞ

JAVA'NIN TARİHÇESİ
   Java nın tarihine bakındığında C ve C++ dillerini görmek mümkündür.Çoğu özelliğini bu 2 dilden devralmıştır.Söz dizimi olarak C yi takip eder. Nesne yönelim özellikleri olarak C++ dan etkilenmiştir. Programlamanın doğuşu C olarak kabul edilir daha sonra 1980 li yılların başında C++ kullanılarak nesne yönelimli programlama büyük önem kazandı. Ama bir süre sonra C++ da ihtiyaçlara cevap vermedi ve programcılar yeni bir dil arayışına girdiler.
  Java 1991 yılında Sun Microsystems Inc. şirketinde çalışan James Gosling,Patrick Naughton,Chris Wart,Ed Frank ve Mike Sheridan tarafından tasarlandı.Çalışan ilk sürümünü geliştirmek 18 ay aldı. Bu dil ilk olarak "OAK" olarak anıldı. Daha sonra 1995 de adı "JAVA" olarak değiştirildi. Java diline duyulan ihtiyacın asıl nedeni platformdan bağımsız bir dil oluşturma isteğiydi. Bu istek Java dilinin doğmasına yol açtı.

JAVA
   Java nesneye yönelik bir programlama dilidir. Günümüzde en çok geçerliliğe sahip programlama dili javadır ve birçok yerde kulllanılır. Örneğin; bilgisayarlarda çalışacak uygulamalar, web tarayıcılarda çalışacak applet'ler, sunucu tabanlı web uygulamaları,enterprise uygulamalar,mobil cihazlar için uygulamalar java dili kullanılarak geliştirmek mümkündür.Bu kadar uygulama yapabilmek javanın birçok özelliğe sahip olduğunu gösterir. Aşağıda java dilinin özelliklerine bakalım.

JAVA DİLİNİN TEMEL ÖZELLİKLERİ
1) Java platformdan bağımsız olarak çalışır. Aynı kod birden fazla sistem üzerinde çalışabilir.Bu özellik aynı zamanda javanın taşınabilir olduğunu gösterir.Java bunu sanal makine sayesinde yapar. Bu makine yazılan kodu her sisteme uyarlayabilir.
2) Nesneye yönelik bir programlama dilidir. Javada her şey nesneye dayanır.Kodlar belli bir sınıf içerisinde tutulur.
3) Javada pointer yoktur.
4) Yorumlanabilen ve yüksek performanslı bir dildir.
5) Sağlam ve güvenlidir.
6) Javada fonksiyonlar yerine metotlar vardır.
7) Diğer dillerde olan "scope" mantığı bu dildede vardır.



JAVANIN ÇALIŞMA MANTIĞI
   Javanın çalışma matığını anlamak için öncelikle JDK,JRE,JVM kavramlarını bilmek gerekir.

JDK : Java Development Kit, javada geliştirdiğimiz uygulamaları derleyip çalıştıran kütüphaneleri içerir.

JRE : Java Runtime Enviroment, java ile daha önceden derlenmiş uygulamaları çalıştırmak için kullanılır. JDK kurulumu ile birlikte direk bilgisayara kurulmaktadır.

JVM: Java Virtual Machine, yukarıda bahsettiğimiz sanal makinedir.Javanın platrformdan bağımsız olmasını sağlayan bu araçtır. JVM derlenmiş kodları makine diline çevirerek işletim sistemine uygun hale getirerek kodun çalışmasını sağlar.

Günümüzde java derleyicileri olarak ne çok kullanılan IDE ler ECLİPSE ve NETBEANS dır.
Bunlardan birini kullanarak java kodu yazabiliriz. Şimdi JDK ve ECLİPSE kurulumlarını inceleyelim.

JDK KURULUMU
   Öncelikler "oracle" resmi sitesine giriyoruz yazılım sözleşmesini kabul etikten sonra bilgisayarımıza uygun .exe uzantılı dosyayı seçiyoruz ve bilgisayarımıza indiriyoruz. İndirilen dosyaya çift tıklayınca aşağıdaki ekran karşımıza geliyor.


Yukarıda gelen sayfaya next diyerek bir sonraki adıma geçiyoruz.


Bu gelen ekranda da next butonuna tıkladıktan sonra kurulum ekranı gelip dosyaların bilgisayarınıza kopyalandığını göreceksiniz.

Kurulum tamamlandıktan sonra JDK size dosyayı nereye kuracağını aşağıdaki gibi belirtecektir.

Eğer bilgisayarınıza ,içinde farklı bir yere kurulum yapmak istiyorsanız." Change" butonuna tıklayarak değişiklik yapabilirsiniz. Kurulacak olan yeri seçtikten sonra "next" diyerek kurulumun tamamlanması için devam ediyoruz. Kurulum bittikten sonra aşağıdaki ekran karşımıza gelecek bu ekranda "close" butonuna tıklayarak kurulumu tamamlıyoruz.


Şimdiki adımımız windows ortam değişkenini ayarlamak, bunun için sırayla şu aşamaları takip etmeliyiz.

İlk olarak bilgisayarım simgesine sağ tıklayıp özellikler seçeneğini seçin. Açılan  pencereden sol taraftaki gelişmiş sistem ayarları seçeneğini seçin. Karşınıza aşağıdaki gibi bir pencere gelecek buradan ortam değişkenleri butonuna tıklayın.


Karşınıza gelen penceredeki değişken değeri bölümündeki metnin sonuna noktalı virgül koyarak C:\Program Files\Java\jdk1.7.0_04\bin ifadesini ekleyin ve "tamam" butonuna tıklayın.



Böylelikle JDK kurulumumuzu bitirmiş oluyoruz. Şimdi sıra ECLİPSE kurulunda :

ECLİPSE KURULUMU

https://eclipse.org/downloads/ bu adrese gidip işletim sistemimize uygun eclipse türünü seçip indiriyoruz.
İndirdiğimiz "zip" dosyasını C:\ kök dizini altında sağ tıklayıp buraya çıkart dedikten sonra C:\ kök dizininde eclipse isminde bir klasör oluşacak. Bu klasörün içinde eclipse.exe adındaki dosyaya çift tıklıyoruz.



Kurulum bittikten sonra ECLİPSE IDE miz kurulur ve aşağıdaki pencere açılır.


Şekildeki gibi bizi ilk olarak welcome sekmesi karşıladı. bu sekmeyi kapatarak, FİLE>NEW>JAVA PROJECT diyerek java projelerimizi oluşturup kodlarımıza başlayabiliriz.

Fakat kodlara başlamadan önce java hakkında bilmemiz gereken ilk şey, kaynak dosyaya vereceğimz ismin ".java" uzantısına sahip olması gerekir. Örneğin : Example.java gibi.
Aksi takdirde java derleyicisi kodları derlemez.
Diğer dikkat edilmesi gereken bir noktada programın tutulduğu sınıf adının dosya adı ile aynı olması gerektiğidir.Ayrıca harfleride de dosya adının harfleriyle aynı olmalıdır. Çünkü java harf kipine duyarlıdır.
Örneğin :  Kaynak dosya adımız "Example.java" olursa , kodların yazıldığı sınıfta "class Example" olmalıdır.

JAVA İLE İLK PROGRAMLAR

--JAVA DA "HELLO WORLD" YAZDIRMA--

System.out.println" kodu "System.out.print" şeklinde de yazılabilirdi. Bu iki kod arasındaki tek fark "println" kendinden sonraki gelen kodu bir satır atlayarak yazar, "print" kendinden sonraki gelen kodu satır atlamadan yazar.

**NOT** : Programlarda kodların yanında "//" gibi ifadeler görebiliriz : "//" bu ifade programlama dillerinde yorum satırı olduğunu belirtmek için kullanılır farklı kullanımları mevcuttur. İlerleyen zamanlarda farklı kodlar üzerinde farklı şekillerini de göreceğiz. "//" bu ifade den sonra gelen yazılar kodlara dahil edilmez açıklama yapmak için kullanılır. Bu bizden sonra herhangi birisi kodlara baktığı zaman daha kolay anlamasına yardımcı olur.


--DEĞİŞKEN TANIMLAMA VE İŞLEM YAPTIRMA--


**NOT** : Görüldüğü gibi değişken tanımlamak değişkenlere değer atamak diğer dillerde olduğu gibidir. Sadece ekrana ifade yazdırma kodları değişiklik gösterir.

DATA TYPES(DEĞİŞKEN TİPLERİ)

 Javada veri tipleri primitive(ilkel) ve non-primitive(class tipleri) olmak üzere ikiye ayrılır.
Primitive tipler C dilinden gelen tiplerdir.Boolean,character,integer(byte-short-int-long),floating-point(float,double) bu veri tipleridir.
Class tipler ise javanın nesne tabanlı olmasından kaynaklı tiplerdir.String,array... bu tiplerdendir.

 Bu veri tipleri içinde programlarda en çok kullanılan ve kullanırken dikkat edilmesi gereken tipler integer(int),float,double tipleridir.

İnteger(int) : Tam sayılar için kullanılan değişkendir. Örneğin tanımlayacağımız sayı bir tam sayı olacaksa bunu "int" olarak tanımlarız.32 bitlik tamsayı tipidir. -2.147.483.648 ile 2.147.483.647 aralığında tamsayı değeri alır.

 Byte : En küçük tamsayı tipidir. 8 bit -128 ile 127 arasında tamsayı değerleri alır.

 Short : 16 bitlik tamsayı tipidir. -32.768 ile 32.767 aralığında değer alır. Bu javada en az        
 kullanılan tiptir.

 Long :64 bitlik tamsayı tipidir. int değişkeninin yetersiz kaldığı sayıları tanımlamak için kullanılır.
   

Float ve Double : Ondalık sayılar tanımlanırken bu değişkenler kullanılır. Çok hassas, virgülden sonraki her rakamın bizim için çok önemli olduğu programlar yazıyorsak "double" kullanırız.Çünkü double hassasiyet olarak float dan daha hassastır.Float bellekte 32 bitlik bir alan kaplarken double 64 bitlik bir alan kaplar.

Boolean : True-False değerlerini göstermek için kullanılır.

Char : Karakterleri saklamak için bu değişken kullanılır. Harf ve sayıları saklayabilir.

Şimdide char ve boolean  veri tipinin kullanımıyla ilgili bir örnekler yapalım.

                                                     CHAR  VE BOOLEAN KULANIMLARI : 
-- BASİT BİR BOOLEAN KULLANIMI--

--BASİT BİR CHAR KULLANIMI--

                                       FLOAT VE DOUBLE DEĞİŞKEN KULLANIMI: 
--BASİT BİR ÇEMBER ALANI HESAPLAMA--


** NOT** : int sayi1 =9, sayi2=sayi3=sayi4=571 (YANLIŞ KULLANIM)

int sayi1,sayi2,sayi3,sayi4;
sayi1=sayi2=sayi3=sayi4=571; (BU İKİ SATIR TANIMLAMA VE YAZIM DOĞRU)

[[ BEN BU TÜR BASİT BİR HATAYLA KARŞILAŞMIŞTIM :) ]]



KOŞUL(IF- ELSE IF-ELSE) İFADELERİ 

Javada koşul ifadeleri diğer dillerde olduğu gibidir. Aynı mantığa sahiptir.if bloğu açılarak içine koşul şartı yazılır.
Örneğin : if(num<100)
System.out.println("Num is the less than 100);

                                                            IF KODU KULLANIMI : 
--BASİT BİR IF KULLANIMI--



İf komutunun yanında programlarda en çok kullanılan diğer bir ifadede "else" ve "if else" ifadesidir. Birden fazla koşulumuz varsa ilk koşulu yazarken "if" kullanırız diğer mümkün olan koşulları yazarken "else if" kullanırız.Bu koşullardan hiçbiri gerçekleşmediği zaman olacak olan durumu belirtirken "else"ifadesini kullanırız. Bu durumu kodlama kısmında daha iyi anlayacağız.


                                                 ELSE İF KODU KULLANIMI :
--IF/ELSE IF/ELSE KULLANIMI İLE MEVSİMLERİ YAZDIRAN PROGRAM--
SWİTCH-CASE-DEFAULT İFADELERİ :

Java programlarının olmazsa olmaz yapılarından biriside "switch-case" yapılarıdır. Çoğu programda ıf-else if-else ifadelerinden daha çok işe yarar ve daha kullanışlıdır. Bu kontrol yapısının çalışma mantığı şu şekildedir: "switch" ifadesinin yanına açılan parantezlere herhangi bir deyim yazılır. Program çalıştığı zaman "case"ifadesinin içindeki değerle karşılaştırılır.Eğer eşlesme olmazsa, ifade çalıştırılır. Fakat "default" ifadesi isteğe bağlıdır. Eğer program çalıştığında eşleşme olmazsa "default" ifadesi çalışır yada "default" ifadesi yoksa program herhangi bir çıktı vermez. Aşağıda bir örnek kodla bu yapıları anlamak daha kolay olacaktır.Aşağıdaki program yukarıda ıf-else ıf-else ile yazdığımız mevsim bulma programının switch-case ile yapılmış halidir.


 
--SWİTCH-CASE KULLANIMI İLE MEVSİM ARAMA--


"BREAK" kodu :"case" ifadesini durdurmaya yarar, yukarıdaki programdan örnek verecek olursak : yukarıda "case" yapılarının içinde ayların kaçıncı ay olduğu değeri yazılmıştır. en üsttede int adında tamsayı değişkenine 10 sayısı atanmıştır. Program çalıştığı zaman ilk olarak 10 sayısını okur alta iner 10 sayısını hangi "case" içerisinde ise o "case" in istediği şeyi yapar. Programımızda 10 sayısı "autum" değerine ile eşleşmektedir. Çıktı olarak : "ekim is in the autum" yazar yani 10. ay ekimdir ve mevsimlerden sonbahardır. Daha sonra break komutu kullanarak program durur. Eğer biz int değişkenine 10 yerine 1 değerini atasaydık program ilk olarak int=1 değişkenini okuyacak alta inecek 1 hangi "case" içerisine dahil oluyorsa o "case" in istediği şeyi yapıp break komutu ile duracaktı. yani 1 verdiğimiz zaman "ocak is in the winter" ekran çıktısı olarak görünecekti.Eğer "break" komutu olmasaydı program durmayacak aşağıdaki "case" lerden devam edecekti.