Java. Mustafa OF. Kocaeli Üniversitesi Kocaeli Meslek Yüksekokulu (Mart 2007)



Benzer belgeler
Ders 4: Diziler (Arrays( Arrays) barisgokce.com

BMÜ-111 Algoritma ve Programlama. Bölüm 5. Tek Boyutlu Diziler

JAVADA DİZİ İŞLEMLERİ

Görsel Programlama DERS 03. Görsel Programlama - Ders03/ 1

Değişkenler, içerisinde tek bir değer tutabilen yapılardır. Örneğin haftanın günlerini değişkenlerde tutmak istersek, her bir gün adı için bir

Klavyeden Basit Giriş/Çıkış İşlemleri

ArrayList Uygulamaları

JAVA PROGRAMLAMA DİLİ ÖZELLİKLERİ

HSancak Nesne Tabanlı Programlama I Ders Notları

Programlama Dillerinde Kullanılan Veri Tipleri

BMÜ-101 ALGORİTMA VE PROGRAMLAMAYA GİRİŞ LABORATUARI

C# Programlama Dili. İlk programımız Tür dönüşümü Yorum ekleme Operatörler

BTP 207 İNTERNET PROGRAMCILIĞI I. Ders 8

Programlama Dilleri 3

Uzaktan Eğitim Uygulama ve Araştırma Merkezi

Uzaktan Eğitim Uygulama ve Araştırma Merkezi

BMÜ-111 ALGORİTMA VE PROGRAMLAMA AKIŞ KONTROLÜ YRD. DOÇ. DR. İLHAN AYDIN

Java String İşlemleri

D İ Z İ L E R A R R A Y S

Kodlanacak programlama dilinin kaynaklarından faydalanılarak kod yazımı yapılır.

Kodlanacak programlama dilinin kaynaklarından faydalanılarak kod yazımı yapılır.

Çoktan Seçmeli Değerlendirme Soruları Akış Şemaları İle Algoritma Geliştirme Örnekleri Giriş 39 1.Gündelik Hayattan Algoritma Örnekleri 39 2.Say

Dr. Fatih AY Tel: fatihay@fatihay.net

Bilgisayar Teknolojileri Bölümü Bilgisayar Programcılığı Programı. Öğr. Gör. Cansu AYVAZ GÜVEN

Nesne Yönelimli Programlama

YZM 2105 Nesneye Yönelik Programlama

1. Aşağıdaki program parçacığını çalıştırdığınızda result ve param değişkenlerinin aldığı en son değerleri ve programın çıktısını yazınız.

C#(Sharp) Programlama Dili

Sunum İçeriği. Programlamaya Giriş

HSancak Nesne Tabanlı Programlama I Ders Notları

2 ALGORİTMA VE AKIŞ DİYAGRAMLARI

BIL1202 ALGORİTMA VE PROGRAMLAMAYA GİRİŞ

ArrayList(int initialcapacity) Sığası (capacity) parametrenin belirlediği sayıda olan bir dizi oluşturur.

Aynı tipten çok sayıda değişken topluluğudur. X Y Score1 Score2 (0) (1) (2)...

YZM 2105 Nesneye Yönelik Programlama

Diziler. Yrd.Doç.Dr.Bülent ÇOBANOĞLU

Temel Bilgisayar Programlama Final Sınavı Çalışma Notları

Binary Search. (Yarılama) Bölüm Dizide Bir Öğe Arama

Öğr. Gör. Musa AYDIN Fatih Sultan Mehmet Vakıf Üniversitesi

Dizi türündeki referanslar, dizi nesnelerine bağlanmaktadır. Dizi referansları tanımlamak bu dizinin hemen kullanılacağı anlamına gelmez...

1. Her marka için 3 aylık satış toplamı nedir? (Tablodaki satır toplamları)

ALGORİTMA VE PROGRAMLAMA I

Diziler İndisli Değişkenler

Değişkenler. Geçerli değişken isimleri : baslamazamani, ad_soyad, x5 Geçersiz değişken isimleri : 3x, while

Nesne tabanlı programlama nesneleri kullanan programlamayı içerir. Bir nesne farklı olarak tanımlanabilen gerçek dünyadaki bir varlıktır.

YMT219 VERİ YAPILARI ÖDEV-1

BİL-141 Bilgisayar Programlama I (Java)

HSancak Nesne Tabanlı Programlama I Ders Notları

BBS515 Nesneye Yönelik Programlama. Ders 2 Zümra Kavafoğlu

Uzaktan Eğitim Uygulama ve Araştırma Merkezi

Interface Comparator. Kılgılayan sınıf: Collator. Bildirimi: public interface Comparator

/*Aşağıda ki kodları doğru şekilde anlar ve kullanırsanız java da sınıfları biraz da olsa anlamış olursunuz.*/

Görsel Programlama DERS 04. Görsel Programlama - Ders04/ 1

Bil101 Bilgisayar Yazılımı I. M. Erdem ÇORAPÇIOĞLU Bilgisayar Yüksek Mühendisi

Algoritma ve Programlama: Karar Yapıları ve Döngüler

Karşılaştırma İşlemleri ve Koşullu İfadeler

C Programlama Dilininin Basit Yapıları

NESNEYE YÖNELİK PROGRAMLAMA

Dizi ( Array ) ve Dizgi ( String )

İçerik. Temel Kavramlar. Nesne Nedir? 1. Nesne : Örnek. Nesne Nedir? 2. Geçen hafta: Bu hafta: BBS-515 Nesneye Yönelik Programlama

PROGRAMLAMAYA GİRİŞ DERS 2

Temel Kavramlar BBS-515 Nesneye Yönelik Programlama

Ders - 7 while döngüsü

C# Yazım Kuralları ERCİYES. Ü. BİLGİSAYAR M. COMPUTER PROGRAMMING II 1 FEHİM KÖYLÜ

Temel Veri Türü İşlemleri

Algoritma ve Programlamaya Giriş II JAVA İLE PROGRAMLAMA. Muhammet BAYKARA

Java da Program Denetimi ve Operatörler

// hataları işaret eden referans

Java Programlama Dilinde Veri Tipleri. Yrd. Doç. Dr. Aybars UĞUR

ALGORİTMA VE PROGRAMLAMA I

BM102 BİLGİSAYAR PROGRAMLAMA II LABORATUVAR UYGULAMALARI. 3Hafta

PHP, nesne-yönelimli (object-oriented) bir dil olduğu için, nesne oluşturma imkânına ve bunların kullanılmasını sağlayan metodlara da sahiptir.

Konular. Hafta 5 Veri Tipleri (Devam) BLG339 PROGRAMLAMA DİLLERİ KAVRAMI

İnternet Programcılığı Dersi 2.Dönem Ders Notu

Özyineleme (Recursion)

BMT 101 Algoritma ve Programlama I 6. Hafta. Yük. Müh. Köksal Gündoğdu 1

Nesne Tabanlı Programlama

Uzaktan Eğitim Uygulama ve Araştırma Merkezi

Karabük Üniversitesi, Mühendislik Fakültesi... WEB TEKNOLOJİLERİ

Lab7 DOĞU AKDENİZ ÜNİVERSİTESİ BİLGİSAYAR VE TEKNOLOJİ YÜKSEKOKULU BİLGİSAYAR PROGRAMCILIĞI. BTEP212 Java. Uygulama1: package javaapplication58;

Fonksiyonlar. C++ ve NESNEYE DAYALI PROGRAMLAMA 51. /* Fonksiyon: kup Bir tamsayının küpünü hesaplar */ long int kup(int x) {

Operator Aşırı Yükleme (Operator OverLoading)

Bir dizinin boyutları sabittir ve kullanılmadan önce belirlenmelidir. Dizi boyutunu belirlemek için başka bir değişkende kullanabilirsiniz.

BASİT VERİ TÜRLERİ, STRİNGLER, VE KONSOL GİRİŞ/ÇIKIŞ

PROGRAMLAMA TEMELLERİ DERSİ ÖZETİ

5.HAFTA. Sınıf ve Nesne Kavramı, Metot Oluşturma, Kurucu Metot, this Deyimi

DÖNGÜLER BMÜ-111 ALGORİTMA VE PROGRAMLAMA-I YRD. DOÇ. DR. İLHAN AYDIN

Nesne Tabanlı Programlama

BBS515 Nesneye Yönelik Programlama. Ders 2 Zümra Kavafoğlu

BBS515 Nesneye Yönelik Programlama. Ders 3 Zümra Kavafoğlu

enum bolumler{elektronik, insaat, bilgisayar, makine, gida};

Java da Program Denetimi ve Operatörler. Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 2 1

NESNE YÖNELİMLİ PROGRAMLAMA HAFTA # 2

Java da Soyutlama ( Abstraction ) ve Çok-biçimlilik ( Polymorphism )

İNÖNÜ ÜNİVERSİTESİ MÜHENDİSLİK FAKÜLTESİ BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ 2. SINIF 1. DÖNEM VERİ YAPILARI DERSİ LABORATUAR ÖDEVİ

Java ile Nesneye Yönelik Programlama (Object Oriented Programming)

MAT213 BİLGİSAYAR PROGRAMLAMA I DERSİ Ders 1: Programlamaya Giriş

DİZİLER-KATARLAR ALGORİTMA VE PROGRAMLAMA II

EMT2226 Nesne Yönelimli Programlamaya Giriş

Transkript:

Java Mustafa OF Kocaeli Üniversitesi Kocaeli Meslek Yüksekokulu (Mart 2007)

Main Metod'u Java'da yapılabilecek en basit program ekrana yazı yazan bir application'dur. public class selam public static void main(string[] args) System.out.println("Merhaba Dunya!"); Basit bir işlem gerçekleştirmesine rağmen bu class, bir Java class'ı ve application'u hakkında bir çok bilgi içermektedir. Java'da her birim bir class olmak zorundadır. Bağımsız değişken veya function yoktur. Her değişken veya function mutlaka bir class'ın içinde yer alır. Her application aslında özel bazı koşullara sahip bir class'dır. Bir class'ın application olabilmesi için gerekli koşul public static void main(string[] args) diye bir metodunun olmasıdır. Java bir class'ı uygulama olarak çalıştıracağı zaman, o class'ın main() metodunu bulur ve oradan itibaren çalıştırır. Bu metot yukarıdaki şekliyle aynen bulunmalıdır yoksa Java bu class'ın bir program olduğunu anlayamaz. Ekrana yazı yazmak için System.out.println() şeklinde bir ifade kullanılır. Bu, System adlı class'ın out adlı property'sinin println() adlı metodunu çağırmak demektir. System class'ı uygulamanın çalıştığı ortamla ilişkili bazı property'ler ve metotlar barındırır. Ekrana yazmak için out adlı bir property'si bulunmaktadır. println() metodu da ekrana bir yazı yazıp yeni bire satıra geçer, yani bir satırlık yazı yazar. Görüldüğü gibi Java'da basit bir application yazmak için bile (selam örneğinde olduğu gibi) bir class yapmak gerekir. Ekrana yazı yazmak için bile bir classın (System'in ) bir property'sinin (out'un) bir metodunun (println()'in) çağırılması gerekmektedir. En basit application için bunları yapmak gerekiyorsa Java'nın çok zor ve öğrenilemez olduğu düşünülebilir. Ancak en karmaşık application'larda da sadece bu ve benzer işlemler yapılır. Sadece class, property ve metot isimleri ve işlevleri değişir. Değişken Kullanımı Selam class'ıyla aynı işlevi yapan bir başka class yazalım. public class degiskenliselam public static void main(string[] args) String mesaj="merhaba Dunya!"; System.out.println(mesaj);

Bu class ekrana yine aynı mesajı yazacaktır. Ancak bu kez ekrana yazılacak yazı önce bir değişkende saklanıyor, sonra ekrana basılmak üzere println()'e veriliyor. Java'da değişken bu şekilde yapılır : DeğişkenTipi değişkenismi=değeri; DeğişkenTipi, bir değişkenin nasıl bir veri sakladığını gösterir. Java'da bir değişkenin mutlaka DeğişkenTipi'nin belli olması gerekir. String mesaj="merhaba Dunya!"; Şeklinde bir ifade de "mesaj diye bir değişken var, bunun değişken tipi String'dir ve ilk değeri 'Merhaba Dünya!'dır" demektir. String bir class'dır ve içerisinde karakter barındırır. Metot Kullanımı Yine aynı şeyi yapan bir class yapalım. Ancak ekrana bir satır basan bir metot kullanarak yapalım. public class metodlaselam public static void yaziyazdir(string yazi) System.out.println(yazi); public static void main(string[] args) yaziyazdir("merhaba Dunya!"); yaziyazdir() metodunun işlevi kendisine verilen String'i ekrana basmaktır. main() metodunda da yaziyazdir() metodu çağırılmaktadır. Bir metod bir kez yazıldıktan sonra defalarca kullanılabilir. public class metodlaselam public static void yaziyazdir(string yazi) System.out.println(yazi); public static void main(string[] args) yaziyazdir("merhaba Dünya!"); yaziyazdir("merhaba Güneş!"); yaziyazdir("merhaba Ay!"); Metod tanımlamak şu şekilde olur :

DönüşTipi metodismi(paramteretipi1 parametre1, ParamtereTipi1 parametre1) Burada her metodun alacağı parameter'lar ve return edilecek değerin tipi belirtilir. Eğer dönülecek hiç bir değer yoksa dönüş tipi olarak void yazılır. Birden Fazla Metot Kullanımı Aynı class içince birden fazla metod yazılabilir. Bunlar gerektiğinde birbirlerini çağırabilir. // ciftmetodluselam.java public class ciftmetodluselam public static void yaziyazdir(string yazi) System.out.println(yazi); public static void selamyazdir(string isim) yaziyazdir("merhaba "+ isim); public static void selamyazdir2(string selamturu, String isim) yaziyazdir(selamturu + " " + isim); public static void main(string[] args) selamyazdir2("merhaba","dünya!"); Not: Türkçe karakterin ( ü ) doğru yazılmadığına dikkat ediniz. Bunu gidermek için Unicode karakterler kullanılabilir. (www.unicode.org) İki string tipini birleştirmek için '+' operatorü kullanılır. Tamsayılar için toplama anlamına gelen '+', Stringler için birleştirme anlamına gelir. 1+2 işleminin sonucu 3 ederken "1"+"2" işleminin sonucu "12" eder. Class Kullanımı Bir class yapalım ama bu class bir application olmasın. Bu sadece başka bir uygulamaya hizmet verecek bir class olsun. Yukarıda yaptığımız örneği kullanabiliriz. //metodlaselam.java public class metodlaselam public static void yaziyazdir(string yazi) System.out.println(yazi); public static void selamyazdir(string isim)

yaziyazdir("merhaba "+ isim); Şimdi de metodlaselam adlı class'ı kullanan bir application yapalım. //classileselam.java public class classileselam public static void main(string[] args) metodlaselam.selamyazdir("hayat"); Burada iki class'ın işbirliği sözkonusu. metodlaselam ekrana bir selamlama basabiliyor. classileselam ise bu class'ı kullanarak "Merhaba Hayat" diyebiliyor. Aynı şekilde bir başka application da bu class'ı kullanabilir. //classileselam1.java public class classileselam1 public static void main(string[] args) metodlaselam.yaziyazdir("java Programlama Dili"); Bir class yapmanın avantajı, bir işlemi bir kere yapmak, bir daha da oradan kullanmaktır. metodlaselam'da bir değişiklik yapma ihtiyacı duyarsak öbür class'lar otomatik olarak duruma adapte olacaktır. Örneğin, metodlaselam.selamyazdir()'ı public static void selamyazdir(string isim) yaziyazdir("merhaba "+ isim + "!"); şeklinde değiştirelim. İki uygulama da çalışınca selamlamayı sonunda ünlem işareti ile yapacaktır. Parametre Kullanımı Programda görüldüğü gibi sadece "Merhaba diyebilmektedir. Bunu kullanan classlardan birinin "Ne Haber?" deme hakkı yoktur. Bunun için başka bir class yapalım :

// metodlaselam1.java public class metodlaselam1 public static void yaziyazdir(string yazi) System.out.println(yazi); public static void selamyazdir(string selamlanan,string selamturu ) yaziyazdir(selamturu+ " " + selamlanan + "!" ); Yukarıdaki class ı aşağıdaki gibi kullanabiliriz. //classileselam2.java public class classileselam2 public static void main(string[] args) metodlaselam1.selamyazdir("eren","merhaba"); metodlaselam1.selamyazdir("eren","ne Haber"); Sonuç : Aynı İsimli Birden Fazla Metot Yazmak : Overloading İki kullanımda da mutlaka Merhaba veya Ne Haber diye bir selamlama verilmelidir. Oysa aksi belirtilmediği sürece "Merhaba" demesi sağlanabilir. Varsayılan değer olarak Merhaba değeri çıkartılabilir. //metodlaselam2.java public class metodlaselam2 public static void yaziyazdir(string yazi) System.out.println(yazi); public static void selamyazdir(string selamlanan,string selamturu ) yaziyazdir(selamturu+ " " + selamlanan + "!" ); public static void selamyazdir(string selamlanan) selamyazdir(selamlanan,"merhaba"); Bu şekilde benzer işlevi gören aynı adlı iki metod iki farklı şekilde kullanılabilir. //classileselam3.java public class classileselam3 public static void main(string[] args) metodlaselam2.selamyazdir("eren","ne Haber"); metodlaselam2.selamyazdir("eren");

İkinci durumda biz söylemesek de "Merhaba" diyecektir. Buna overloading denir. İkinci bir versiyon yazarak selamyazdir()'ı overload etmiş olduk. Nesne (Object) Oluşturmak Diyelim ki aynı metod, parametrelerden'lerden biri hep aynı olmak üzere çok defa çağrılıyor. metodlaselam2.selamyazdir("eren","ne Haber"); metodlaselam2.selamyazdir("nihan","ne Haber"); metodlaselam2.selamyazdir("funda","ne Haber"); metodlaselam2.selamyazdir("celal","ne Haber"); görüldüğü gibi gereksiz yere "Ne Haber" parametresi sürekli giriliyor. Çünkü bu class'a şöyle diyemiyorsunuz. "Ne Haber" selamlamasını aklında tut. Sonra da aynı selamlamayı Nihan, Funda gibi isimle kullan. Oysa Java'da bunu yapmak mümkündür. Bunun için class şu şekide olmalıdır. //metodlaselam4.java public class metodlaselam4 String selamturu; public void selamyazdir(string selamlanan) System.out.println(selamturu+ " "+ selamlanan + "!" ); Kullanımı da şöyle olacaktır. //classileselam4.java public class classileselam4 public static void main(string[] args) metodlaselam4 yazdirilan=new metodlaselam4(); yazdirilan.selamturu="ne Haber"; yazdirilan.selamyazdir("eren"); yazdirilan.selamyazdir("nihan"); yazdirilan.selamyazdir("funda"); yazdirilan.selamyazdir("celal"); Dikkat ettiyseniz selamyazdir() metodunun başında static yazmıyor. static keyword'u metodlar için kullanıldığında, ilgili metod, bu class'tan bir nesne yaratılmaksızın kullanılabilir

demektir. Ancak bu durum kullanacağı veriyi dışardan her sefer alan metod'lar için geçerlidir. O yüzden metodlaselam4.selamyazdir("eren","ne Haber") ifadesinde "Ne Haber" selamlamasını sürekli girmek zorundayız. Bunun nedeni bu classından hiç nesne yaratılmamış olması ve veri tutma yeteneğinizin olmamasıdır. metodlaselam4 ise yaratılabilir ve selamturu değerini saklayabilir. Bir nesne içerisinde değer saklayabilen yapıya property denir. Kullanımı da object.property biçimindedir. Bir nesne oluşturmak için Classismi Nesne=new Classismi(); gibi bir ifadeye gerek vardır. metodlaselam4 yazdirilan=new metodlaselam4(); gibi. Bu class'da selamturu bir property'dir. Selamyazdir() metodunun her çağrılışında selamturu property'sinin değeri kullanılır. Bu property bir kez atandı diye bir daha değişmez durumda değildir. İstenirse tekrar değiştirilebilir. Classileselam4.java dosyasını aşağıdaki gibi değiştirirsek; //classileselam4.java public class classileselam4 public static void main(string[] args) metodlaselam4 yazdirilan=new metodlaselam4(); yazdirilan.selamturu="ne Haber"; yazdirilan.selamyazdir("eren"); yazdirilan.selamyazdir("nihan"); yazdirilan.selamyazdir("funda"); yazdirilan.selamyazdir("celal"); yazdirilan.selamturu="merhaba"; yazdirilan.selamyazdir("eren"); yazdirilan.selamyazdir("nihan"); yazdirilan.selamyazdir("funda"); yazdirilan.selamyazdir("celal"); biçiminde selamturu değeri değiştirilebilir. Değiştikten sonra ekranda görülen selamlama da değişir. Bunun için object'i tekrar yaramaya gerek de yoktur. Metodlaselam4 classında selamturu property'si tanımlanırken default bir değer verilebilir. String selamturu="merhaba"; O zaman en başta bir değer atamadan da kullanılabilir. Komut Satırı Argümanları Bir Java application'unda dışarıdan argument alınması mümkündür. Bu şekilde application'un duruma göre değişik çalıştırılabilmesi, application'u değiştirmeden mümkün olur. Normal şartlar altında bir application'un çalışması için komut satırından java Classismi

girilmesi gerekir. Ancak argument verilmesi durumunda java Classismi Argument0 Argument1... biçiminde kullanılır. Bu argument'ler main metod'una args[] array'i olarak verilir. main() metodunun public static void main(string[] args) biçiminde tanımlanmasının nedeni budur. Programın içinden argument'lara public static void main(string[] args) String arg0=args[0]; String arg1=args[1]; biçiminde erişilebilir. Dışarıdan aldığı isme selam veren bir application yazalım. public class argumanlaselam public static void main(string[] args) String selamlanan=args[0]; System.out.println("Merhaba "+selamlanan); Bu uygulamayı çalıştırırken java argumanlaselam Eren girersek ekrana "Merhaba Eren" yazar. Yani bizim application'umuzu kullanan kişi istediği değeri girebilir, istediği selamı ekrana çıkarabilir. Elbette biz bunu programın içinde de yapabilirdik. Ancak bu durumda her değişiklikte yeniden program yazmamız veya her sefer kodu değişitirip derlememiz gerekirdi. Oysa bir uygulama bir kez yazıldıktan sonra başka bir yerde hatta başka bir ülkedeki insanlar tarafından kullanılabilir olmalıdır. Her değişiklikte application'u yeniden yazmak çoğu kez mümkün olmaz. Argümanların Kontrolü Yukarıdaki uygulama çalıştırılırken argument vermek unutulursa hata uyarısı alınır. Çünkü uygulama mutlaka neyi selamlayacağının girilmesini istemektedir. Bu hatadan kurtulmak için kullanıcının bir değer girip girmediği kontrol edilebilir. // argumanlaselamkontrol.java public class argumanlaselamkontrol public static void main(string[] args) if(args.length==1) String selamlanan=args[0];

System.out.println("Merhaba "+selamlanan); Uygulamaya argument girilmemesi durumunda sadece hata vermemesi değil, kullanıcıya bir uyarı mesajı vermesi daha uygun olur. // argselamuyari.java public class argselamuyari public static void main(string[] args) if(args.length==1) String selamlanan=args[0]; System.out.println("Merhaba "+selamlanan); else System.out.println("Selam verilecek ismi vermeyi unutmayın"); System.exit(0); Genellikle application'lar bu durumda girilecek argument'ler hakkında bilgi veren bir yazıyı ekrana basarlar ve programdan çıkarlar. Programdan çıkmak, yani application'un çalışmasını kesmek için yukarıdaki programda kullanıldığı gibi System.exit() metodu kullanılır.exit metoduna '0' girmenin anlamı, programın doğal olarak, programcı tarafından durdurulduğunu göstermektir. Bir hata olduğunu belirtmek için 0 dışında bir değer, örneğin '1' girilebilir. Bir application'un, belli bir argument'in girilmemesi durumunda da varsayılan (default) değerle çalışması sağlanabilir. // argselamvarsayilan.java public class argselamvarsayilan public static void main(string[] args) String selamlanan; if(args.length==1) selamlanan=args[0]; else selamlanan="eren"; System.out.println("Merhaba "+selamlanan); Bu application java argselamvarsayilan Eren diye de çağrılabilir, java argselamvarsayilan şeklinde de. İkinci durumda "Merhaba Eren" yazacak ve hata vermeyecektir.

Değişkenler ve Tipler Tip kavramı Java'da her değişkenin belli bir type (tip)'i olması gereklidir. Tip, değişkenin nasıl bir veri taşıdığını ve onun üzerinde ne gibi operasyonlar yapabileceğimizi belirler. Değişkenin type'ı tamsayıysa çıkarma yapabilirsiniz, String ise yapamazsınız. Java yapılan işlemlerde kullanılan değerlerin tiplerine son derece dikkat eder. Herhangi bir tip uyumsuzluğunda derleme hatası gelir. İki sayıyı toplayıp sonucu ekrana basan bir application yapalım. //toplama1.java public class toplama1 public static void main(string[] args) int a=200; int b=100; int toplam; toplam=a+b; System.out.println("a ve b'nin Toplamı : "+toplam); Bu application'da int a=200; ifadesi bir değişkenin declaration'unu içerir. Tanımlama şu biçimde yapılabilir. DeğişkenTipi Değişken=İlkDeğeri; Elbette bu declaration değişkenin ilk değerinin belli olması durumunda kullanılır. İlk değerin daha sonra belli olması durumunda declaration DeğişkenTipi Değişken; biçiminde yapılır. Toplamın sonucu baştan bilinmediği için önce int toplam; biçiminde declaration yapılabilmiştir. Değeri daha sonra bir işlem sonucunda belli olacaktır. toplam=a+b; Buradaki iki satırı tek satır olarak yazmak da mümkündür int toplam=a+b; Bu durumda tanımlama ve işlem aynı ifade içerisinde yer almış olmaktadır.

Class Tipler Java'da temel olarak iki çeşit type vardır : primitive type'lar ve class type'ları. Örneğin int primitive type'tır. String'de bir class type'ıdır. İki String type'ındaki veriyi birleştirmek istersek yine + kullanılır. Ancak işlem bu kez toplama değil birleştirme olur. //stringbirlesme.java public class stringbirlesme public static void main(string[] args) String a="200"; String b="100"; String birlesim; birlesim=a+b; System.out.println("Birleştirilmiş String :" + birlesim); Bu uygulama değeri "200" olan String type'ındaki a ile değeri "100" olan String tipindeki b değişkenini birleştirir. Sonu yine bir String'tir ve "200100"dür. Görüldüğü gibi değişkenlerin tipi işlemlerin nasıl yapılacağını belirlemektedir. int tipindeki bir değişken int a=200; şeklinde tanımlanırken String tipindeki a String a="200"; biçiminde tanımlandı. String değerleri belirtmek için çift tırnak kullanılır. Primitive (ilkel) Tipler Primitive type'lar tamsayı, gerçek sayı, mantıksal ve karakter tiplerdir. Tamsayı tipleri, alabilecekleri maksimum ve minimum değerlerin sırasına göre byte, short, int, long'dur. Gerçek sayılar float ve ondan daha büyük değerleri alan double'dır. Tip olarak boolean sadece true ve false gibi iki değer alır. char tipi de harf,rakam ve noktalama işaretleri gibi karakterleri tutabilir. //primitivetipler.java public class primitivetipler public static void main(string[] args) int i=50000; short s=500; long l=5l; byte b=3; float f=2.5f; double d=3.5; char c='k';

boolean x=true; System.out.println(" Integer : " + i ); System.out.println(" Short: "+ s ); System.out.println(" Long: "+ l ); System.out.println(" Byte : "+b ); System.out.println(" Float : "+ f ); System.out.println(" Double : "+ d ); System.out.println(" Char : "+c ); System.out.println(" Boolean : "+ x ); Primitive Tipler Değişken Açıklama Tip Adı int 32-bit (4-byte) integer değişken tipi- (-2147483648 -- +2147483647 ) short 16-bit (2-byte) integer değişken tipi (-32768 -- +32767 ) long 64-bit (8-byte) integer değişken tipi (-9 Trilyon -- +9 Trilyon) byte 8-bit (1-byte) integer değişken tipi ( -128 +127 ) float 32-bit (4-byte) floating-point değişken tipi. (10-127 10 +128 ) 6 veya 7 Dijit double 64-bit (8-byte) floating-point değişken tipi. (10-1023 10 +1024 ) 15 dijit char 16-bit Unicode karakter şemasını kullanan karakter değişken tipi boolean true veya false değerini kullanan mantıksal değişken tipi Primitive tiplerle ilgili consoldan bilgi alma işlemine ait örneği aşağıda bulabilirsiniz.bu örnekte primitive tip olmayan String class tipi de kullanılmıştır. Ayrıca klavyeden veri almak için Scanner Class ı kullanılmıştır ve bu Class Java 1.5 versiyonu ile gelen yeni bir class dır. //primitivetipleralma.java import java.util.scanner; public class primitivetipleralma public static void main(string[] args) Scanner alinan = new Scanner(System.in); int i; short s; long l; byte b; float f; double d; boolean mantiksal=true; String yazi; //String primitive tip değil class tiptir.

System.out.print("Bir Yazi Giriniz :"); yazi=alinan.nextline(); System.out.print("Integer Sayi Giriniz:"); i=alinan.nextint(); System.out.print("Short Sayi Giriniz:"); s=alinan.nextshort(); System.out.print("Long Sayi Giriniz:"); l=alinan.nextlong(); System.out.print("Byte : "); b=alinan.nextbyte(); System.out.print("Float : "); f=alinan.nextfloat(); System.out.print("Double : "); d=alinan.nextdouble(); System.out.print("Boolean : "); mantiksal=alinan.nextboolean(); System.out.print("Girilen Bilgiler\n" + "Yazi :"+ yazi +"\n"+ "Integer :" + i + "\n"+ "Short :" + s + "\n"+ "Long :" + l + "\n"+ "Byte :" + b + "\n"+ "Float :" + f + "\n"+ "Double :" + d + "\n"+ "Boolean :" + mantiksal + "\n"); Tamsayı Tipler (Integer); int tamsayi1; long uzuntamsayi; tamsayi1= 550;

uzuntamsayi = tamsayi1; Gerçek Sayı Tipleri (Floating Point); double sure=120.0; float deger1 = 220.33F; double deger2 = 165495.332D; double deger3 = 6.10e+16; double deger4 = 135e-7; Aritmetik Operatörler Operatör Açıklama + Toplama - Çıkarma * Çarpma / Bölme % Kalanı Bulma ++ Arttırma -- Azaltma //aritmetikop.java public class aritmetikop public static void main(string[] args) int a = 21, b = 6; int c = a + b; int d = a - b; int e = a * b; int f = a / b; int g = a % b; int h; int j=5; int k=j--; h=15; h+=a; //h+=a -->h=h+a, h-=a-->h=h-a //h*=a -->h=h*a, h/=a-->h=h/a, h%=a-->h=h%a; a++; b--; System.out.println("a:" + a ); System.out.println("b:" + b ); System.out.println("c:" + c ); System.out.println("d:" + d ); System.out.println("e:" + e ); System.out.println("f:" + f ); System.out.println("g:" + g ); System.out.println("h: h=h+a:" + h ); System.out.println("j:" + j + " k:" + k );

Aritmetik Aktarma Operatörleri Arttırma Op. Açıklama += Toplama ve aktarma -= Çıkarma ve aktarma *= Çarpma ve aktarma /= Bölme ve aktarma %= Kalanı Bulma ve aktarma h+=a; h-=a; h*=a; h/=a; h%=a; int j = 5; int k = j--; int j=5; int k=--j -->h=h+a -->h=h-a -->h=h*a -->h=h/a -->h=h%a //j=4, k=5 değerini alır. //j=4, k=4 değerini alır. = aktarma operatörü; a = (b = 3) * b; //a = 9, b= 3 değerini alır. a = b = c = 3; //a=3, b=3, c=3 değerini alır. Gerçek sayılarla yapılan bazı aritmetik işlemler; double x = 5.5, y = 2.0; double m = x + y; // m, 7.5 olur double n = x - y; // n,3.5 olur double o = x * y; // o,11.0 olur double p = x / y; // p, 2.75 olur double q = x % y; // q, 1.5 olur x++; // x,6.5 oldu y--; // y, 1.0 oldu int a = 21, b = 6;

double deger1 = a / b; int a = 21, b = 6; double deger1 = (double) a / b; // deger1 = 3.0 olur. Çünkü her iki değişken de tamsayıdır ve bölüm buna göre yapılır. //deger1 = 3.5 olur. Çünkü sonucun double olması isteniyor. Char Tipi; char karakter = A ; char karakter = A ; Yanlış Kullanım Char tipinde çift tırnak ( ) tek tırnak ( )kullanılır Escape (Kaçış) Karakterleri Escape Karakteri Açıklama \b Backspace \t Yatay Tab \n Satır Atlatma \f Form Atlatma \r Enter \ Çift Tırnak \ Tek Tırnak \\ Ters Slaş Mantıksal Tip (Boolean); Mantıksal tip true veya false değerinden meydana gelir. boolean sonuc = true; boolean cevap = false; Array'ler (Diziler) Birden fazla veriyi sıralı olarak saklamak istdiğimizde ve bu verilere aynı isimle bir eleman numarası belirterek erişmek istediğimizde dizileri kullanabiliriz. Dizileri kullanmadan önce deklare etmemiz gerekmektedir. Dizileri tek boyutlu tanıtabildiğimiz gibi birden fazla boyutla da tanımlayabiliriz. Şu şekilde deklare edebiliriz; tipismi[ ] diziadi=new tipismi[uzunluğu]; Örneğin 10 elemanlı bir int dizisi int[ ] a=new int[10]; şeklinde tanımlanır.

Dizinin bir elemanına erişim işlemi için dizinin adı ve parantezler içerisinde eleman numarasını belirtmemiz gerekir. a[3]=7; int x=a[5]; //a dizisinin 3 nolu elemanına 7 değeri aktarıldı. //a dizisinin 5 nolu elemanındaki değeri x değişkenine aktarıldı. String[ ] isimler; //String türünde isimler adında bir dizi tanımlandı. int[ ] dizi1; //int türünde dizi1 adında bir dizi tanımlandı. int dizi2[ ]; //int türünde dizi2 adında bir dizi tanımlandı. String[ ] isimler; isimler = new String[10]; //10 elemanlı String türünde isimler adında bir dizi tanımlandı. String[ ] isimler = new String[10]; //10 elemanlı String türünde isimler adında bir dizi tanımlandı. System.out.println( Personel Sayısı? ); int adet = alinan.nextint(); //alinan Scanner nesnesi ile alındı String[] personel = new String[adet]; String[] gunler = new Array[7]; gunler[0] = Pazartesi ; gunler[1] = Salı ; gunler[2] = Çarşamba ; gunler[3] = Perşembe ; gunler[4] = Cuma ; gunler[5] = Cumartesi ; gunler[6] = Pazar ; String türünde gunler isimli 7 elemanlı bir dizi tanımlandı ve ilk değerleri atandı. Aynı aktarma işlemini şu şekilde de yapabiliriz. String[ ] gunler = Pazartesi, Salı, Çarşamba, Perşembe, Cuma, Cumartesi, Pazar int[ ] sayilar = 3,5,6,2,7,34,88 ; veya int[ ] sayilar = new int[ ] 3,5,6,2,7,34,88 ; Dizilerle döngü kullanımı; //diziler1.java public class diziler1 public static void main(string[] args) int i; int[ ] sayilar = new int[200]; for (i = 0; i < sayilar.length; i++) sayilar[i] = (int)(math.random() * 100) + 1;

System.out.print(sayilar[i]+"-"); Sayilar dizisindeki 1 den 10 a kadar sayıların toplamını bulan örnek; //dizidegerleritoplami.java public class dizidegerleritoplami public static void main(string[ ] args) int[ ] sayilar=new int[ ]1,2,3,4,5,6,7,8,9,10 ; int toplam=0; for(int i=0;i<sayilar.length;i++) toplam+=sayilar[i]; System.out.println("Sayilarin Toplami : "+ toplam); //dizidegeralma.java import java.util.scanner; public class dizidegeralma public static void main(string[ ] args) Scanner alinan = new Scanner(System.in); String[ ] personel = new String[10]; for (int i = 0; i < 10; i++) System.out.print(i+".Personelin Adini Giriniz :"); personel[i] = alinan.nextline(); System.out.println("\nGirilen Bilgiler\n"); for (int i = 0; i < 10; i++) System.out.println(i+".Personel:"+personel[i]);

Sonuç : Yukarıdaki örnekte personel dizisinin elemanlarını listelerken for döngüsünde başlangıç ve bitiş değerlerini belirtmemiz gereklidir. Bazı durumlarda dizinin bu bilgilerine sahip olmayabiliriz. Bu durumlarda daha farklı bir for döngüsü kullanabiliriz. Diziler için geliştirilmiş for döngüsü Kullanım şekli; (For döngüsünün bu kullanım şekli için JDK 1.5 gereklidir) for ( tipismi döngüdeğişkeni : dizi ) ifadeler; //dizigunler.java public class dizigunler public static void main(string[ ] args) String[ ] gunler = "Pazartesi", "Sali", "Carsamba", "Persembe", "Cuma","Cumartesi", "Pazar" ; System.out.println("Günler:\n"); for (String gun : gunler) System.out.println(gun);

Metodlarla dizi kullanımı; Aşağıdaki örnekte metod kullanarak dizi değerlerine ulaşılmaya çalışılıyor. //dizimetodla.java public class dizimetodla public static String[ ] gunlerigetir() String[ ] gunler = "Pazartesi", "Sali", "Carsamba", "Persembe", "Cuma","Cumartesi", "Pazar" ; return gunler; public static void diziyiyazdir(string[ ] elemanlar) for (String s : elemanlar) System.out.println(s); public static void main(string[ ] args) String[ ] gunler1 = gunlerigetir(); diziyiyazdir(gunler1); İki Boyutlu Dizi Kullanımı; İki boyutlu dizileri genellikle sütun ve satırlardan oluşan verileri depolamak için kullanırız. Örneğin aşağıdaki tabloyu dizi değişkenlere yerleştirmek için iki boyutlu diziler oldukça kullanışlı olacaktır.

Yıl Trabzon Ankara Van Manisa 2001 23853 22838 36483 31352 2002 25483 22943 38274 33294 2003 24872 23049 39002 36888 2004 28492 23784 42374 39573 2005 31932 23732 42943 41734 Satışlar Tablosu İki boyutlu bir diziyi deklare etmek için; double satislar[] []; boyutlarını ayarlamak için; satislar = new double[5] [4]; satislar iki boyutlu dizisinin uzunluğunu, satır kısmında 5 elemanlı, sütun kısmında 4 elemanlı olarak tanımladık. satislar iki boyutlu dizisinin toplam eleman sayısı 20 oldu (5 x 4) Yukarıdaki tanımlamayı tek satırda da yapabilirdik. double[] [] satislar = new double [5] [4]; İki boyutlu dizilere değer aktarma ve alma; satislar [0] [0] = 23853.0; deger = satislar [0] [0]; //deger değişkenine 23853.0 aktarıldı. Dizi tanımını yaptıktan sonra ilk değerlerini atama; double [][] satislar = ; 23853.0, 22838.0, 36483.0, 31352.0, // 2001 25483.0, 22943.0, 38274.0, 33294.0, // 2002 24872.0, 23049.0, 39002.0, 36888.0, // 2003 28492.0, 23784.0, 42374.0, 39573.0, // 2004 31932.0, 23732.0, 42943.0, 41734.0 // 2005 //ikiboyutludizi1.java public class ikiboyutludizi1 public static void main(string[] args) double[][] satislar = 23853.0, 22838.0, 36483.0, 31352.0, // 2001 25483.0, 22943.0, 38274.0, 33294.0, // 2002 24872.0, 23049.0, 39002.0, 36888.0, // 2003 28492.0, 23784.0, 42374.0, 39573.0, // 2004 31932.0, 23732.0, 42943.0, 41734.0 // 2005 ;

System.out.println("Satislar Tablosunun ilk degeri:"+satislar[0][0]); System.out.println("Satislar Tablosunun son degeri:"+satislar[4][3]); System.out.println("Tum Tablo"); System.out.println("Trabzon\tAnkara\tVan\tManisa"); for (int y = 0; y < 5; y++) for (int z = 0; z < 4; z++) System.out.print(satislar[y][z]); System.out.print("\t"); System.out.println(); İki boyutlu dizi kullanırken yukarıdaki gibi dikdörtgen şeklinde düzenli bir veri yapısı olması zorunlu değildir. Aşağıdaki gibi bir tabloyu da iki boyutlu bir diziye yerleştirebiliriz. Ekipler Üyeler A Celal Of, Kemal Ak B Mehmet Demir, Oktay Aslan, Cemil Ceyhan C Ercan Arpaz, Kerim Kal D Serpil Sivrikaya, Ahmet Eren, Nihan Cemre Ekip ve üyeleri tablosu //ikiboyutludizi2.java public class ikiboyutludizi2 public static void main(string[] args) String[][] ekipler = "Celal Of", "Kemal Ak", "Mehmet Demir", "Oktay Aslan", "Cemil Ceyhan", "Ercan Arpaz", "Kerim Kal", "Serpil Sivrikaya", "Ahmet Eren","Nihan Cemre" ; for (int i = 0; i < ekipler.length; i++) for (int j = 0; j < ekipler[i].length; j++)

System.out.println(ekipler[i][j]); System.out.println(); Yukarıdaki örneği geliştirilmiş for döngüsü ile şu şekilde değiştirebiliriz; //ikiboyutludizi21.java public class ikiboyutludizi21 public static void main(string[] args) String[][] ekipler = "Celal Of", "Kemal Ak", "Mehmet Demir", "Oktay Aslan", "Cemil Ceyhan", "Ercan Arpaz", "Kerim Kal", "Serpil Sivrikaya", "Ahmet Eren","Nihan Cemre" ; for (String[] ekipadi : ekipler) for (String uyeadi : ekipadi) System.out.println(uyeadi); System.out.println(); Java, dizilerin boyutunu iki boyutla sınırlama yapmaz. Bir diziyi iki boyuttan daha fazla da tanımlayabilirsiniz. int [][][] ucboyut = new [3][3][3]; ucboyut dizisi 3 boyutlu olarak tanımlandı. ucboyut [0] [1] [2] = 100; //ucboyut dizisinin 0,1,2. pozisyonuna 100 aktarıldı.

//ucboyutludizi1.java public class ucboyutludizi1 public static void main(string[] args) int[][][] ucboyut = 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27 ; System.out.println("Ucboyutlu Dizinin ilk degeri:"+ucboyut[0][0][0]); System.out.println("Ucboyutlu Dizinin son degeri:"+ucboyut[2][2][2]); for (int i = 0; i < 3; i++) for (int j = 0; j < 3; j++) for (int k = 0; k < 3; k++) System.out.print(ucboyut[i][j][k]+"\t"); System.out.println(); Arrays Class ı; Dizi ile ilgili işlemlerinizde Array tipinin yanında gelişmiş bazı metodları bulunan Arrays Class ını da kullanabilirsiniz. Daha önce de bahsedildiği gibi Java da primitive tiplere ilave olarak ayrıca Class karşılıkları bulunmaktadır. Arrays Class ını kullanmaya başlamadan önce java.util.arrays kitaplığını eklemeniz gerekmektedir. (import java.util.arrays;) Arrays Class ına ait bazı metodlar Metot Açıklama static int binarysearch (dizi, aranan) dizi içerisinde aranan ı arar. Eğer bulursa index numarasını döndürür. Bulamazsa -1 değerini döndürür. boolean deepequals(dizi1,dizi2) İki diziyi birbiriyle kıyaslar. dizi1 ve dizi2 aynı elemanlara sahipse true değerini döndürür. Bu metod iki yada daha fazla boyutlu diziler için çalışır. boolean equals(dizi1,dizi2) İki diziyi birbiriyle kıyaslar. dizi1 ve dizi2 aynı elemanlara sahipse true değerini döndürür. Bu metod sadece tek boyutlu dizilerde çalışır. static void fill (dizi, değer) dizi yi verilen değer ile doldurur.değer, dizi ile aynı tipe sahip olmalıdır.

static void fill(dizi, başlangıç, bitiş, değer) static void sort(dizi) static void sort(dizi, başlangıç, bitiş) static String tostring(dizi) dizi yi başlangıç pozisyonundan bitiş pozisyonuna kadar değer ile doldurur. dizi yi küçükten büyüğe doğru sıralar. dizi nin başlangıç ve bitiş pozisyonları arasındaki elemanları küçükten büyüğe doğru sıralar. dizi değerlerini String olarak biçimlendirir. Diziye Değer doldurma; int[] sayilar = new int[10]; Arrays.fill(sayilar, 100); int[] rasgeledizi = new int[1000] Arrays.fill(rasgeledizi, (int)(math.random() * 100) + 1); Diziyi sıralama; int[] sayilar = new int[6]; for (int i = 0; i < 6; i++) sayilar [i] = (int) (Math.random() * 100) + 1; Arrays.sort(sayilar); Dizi içerisinde arama yapma; int aranan = 13; int bulunanyer = Arrays.binarySearch(sayilar, aranan); if (bulunanyer > -1) System.out.println( Sayı Bulundu ); else System.out.println( Sayı Bulunamadı ); Dizileri karşılaştırma; if (Arrays.equal(dizi1, dizi2)) System.out.println( Diziler Eşit ); Dizileri String e çevirme; int[] sayilar = new int[6]; for (int i = 0; i < 6; i++) sayilar[i] = (int) (Math.random() * 100) + 1; System.out.println(Arrays.toString(sayilar)); 10 elemanlı bir diziye 1 ile 100 arasında rasgele değerle dolduran program; //arrayfill1.java import java.util.arrays;

public class arrayfill1 public static void main(string[] args) int[] rasgeledizi = new int[10]; Arrays.fill(rasgeledizi,(int)(Math.random() * 100) + 1); for (int i=0;i<10;i++) System.out.println(i+":" + rasgeledizi[i]); 10 elemanlı sayılardan oluşan diziyi sıralayan program; //arraysort1.java import java.util.arrays; public class arraysort1 public static void main(string[] args) int[] sayilar =24,12,76,14,39,10,456,89,34,26; System.out.println("Siralanmamis Dizi"); for (int i=0;i<10;i++) System.out.println(i+".eleman:" + sayilar[i]); Arrays.sort(sayilar); //sayilar dizisi sıralanıyor System.out.println("Siralanmis Dizi"); for (int i=0;i<10;i++) System.out.println(i+".eleman:" + sayilar[i]);

ArrayList Class ı; ArrayList (Dizi Listesi), temel Java koleksiyon tiplerinden biridir. Dizilere erişim için farklı bir kullanım şekli sunar. Temel özellikleri; Bir ArrayList gerektiğinde otomatik olarak boyutlanabilir. Eğer 50 elemanlı bir dizi oluşturursanız ve 51. Elemana bir değer aktarılması durumunda kalırsanız bu diziyi kullanamayacaksınız ve yeniden 51 elemanlı yeni bir dizi tanıtmanız gerekecektir. Fakat ArrayList te buna gerek yoktur. ArrayList kullanırsanız bu diziye istediğiniz kadar değer aktarabilirsiniz. Eleman problemi yoktur. ArrayList, koleksiyonun ortasına bir eleman ilave etmeyi mümkün kılar. Örneğin 50 elemanlı bir normal dizi kullandığınızda tam ortasına yeni bir eleman araya yerleştirmek için bir kısım işlem gereklidir. Fakat ArrayList e bunu yapmak için sadece 25 nolu elemana şu değeri ilave et demeniz yeterlidir. ArrayList Class ı diziye yeni bir eleman ilave edildiğinde arka planda verileri tutmak için aktif olarak bir dizi kullanır. Diziye yeni bir eleman ilave ettiğinizde dizi dolu olacaktır. Fakat ArrayList Class ı otomatik olarak arka planda yeni bir dizi oluşturur ve önceki verileri ve yeni eklenen verileri bu yeni diziye olduğu gibi kopyalar. ArrayList Class ı, Java.util.ArrayList kütüphane paketi içerisindedir. Bu yüzden ArrayList Class ını kullanmak için programınıza Java.util.ArrayList kütüphanesini veya Java.util.* kütüphanesinin tamamını eklemeniz gerekmektedir. import java.util.arraylist; veya import java.util.*; satırını programınızın başına eklemelisiniz.

ArrayList() Yapıcı ArrayList(int kapasite) Arrays Class Yapıcıları Açıklama Başlangıç kapasite olarak 10 elemanlı bir ArrayList oluşturur. Kapasite ile belirtilmiş olan ArrayList i oluşturur. ArrayList Oluşturma; Bir ArrayList oluşturmak için ilgili kütüphaneyi (java.util.arraylist) programa ekledikten sonra aşağıdaki gibi oluşturabilirsiniz ArrayList isimler; isimler = new ArrayList(); veya ArrayList isimler = new ArrayList(); Yukarıdaki satırda kapasite belirtmeden ArrayList i oluşturduk. Kapasite belirtilmek istendiğinde ArrayList isimler = new ArrayList(100); 100 elemanlı bir ArrayList oluşturuldu. Eğer kapasite verilmezse varsayılan olarak 10 elemanlı bir ArrayList oluşturulur ve istenildiği kadar eleman eklenebilir. ArrayList boyutu otomatik olarak ayarlar. ArrayList<String> isimler = new ArrayList <String> (); Yukarıdaki satırda elemanlarının türü String olan bir ArrayList oluşturuldu. Bu şekilde tanıtmanın derleyicinin (Compiler) yanlış tipteki değerleri ayırması bakımından bir faydası bulunmaktadır. ArrayList e Eleman Ekleme; ArrayList isimler = new ArrayList(); isimler.add( Celal ); isimler.add( Ahmet ); isimler.add( Eren ); isimler.add( Kemal ); add metodu bir ArrayList e eleman eklemeyi sağlar. Ayrıca add metodu yardımıyla belirli bir pozisyona değer eklemeyi sağlar. ArrayList<String> borclular = new ArrayList<String>( ); borclular.add( Celal );

borclular.add( Ahmet ); borclular.add( Eren ); borclular.add( Kemal ); ArrayList sayilar = new ArrayList( ); sayilar.add(10); sayilar.add(20); sayilar.add(30); sayilar.add(40); sayilar.add (2,50); sayilar dizisi listelendiğinde değerleri görüntüler. 10 20 50 //add(2,50) komutu kullanıldı. 30 40 Elemanlara Erişme; ArrayList elemanlarına erişmek için get metodunu kullanabilirsiniz. Eleman numarasını vererek değerine ulaşabilirsiniz. for(int i=0;i<isimler.size();i++) System.out.println(isimler.get(i)); Celal Ahmet Eren Kemal Burada size metodu dizinin boyutunu yani toplam eleman sayısını vermektedir. Geliştirilmiş for döngüsü ile daha kolay bir şekilde diziyi listeleyebilirsiniz. for (String elemanlar:isimler) System.out.println(elemanlar); Celal Ahmet Eren Kemal for (String elemanlar:isimler)

int k= isimler.indexof(elemanlar); System.out.println("Eleman No:" + k + ":" + elemanlar); Eleman No:0:Celal Eleman No:1:Ahmet Eleman No:2:Eren Eleman No:3:Kemal indexof metodu ile elemanın index numarasını öğrenebiliriz. ArrayList<String> gunler=new ArrayList<String>(); gunler.add( Pazartesi ); gunler.add( Salı ); gunler.add( Çarşamba ); gunler.add( Perşembe ); gunler.add( Cuma ); gunler.add( Cumartesi ); gunler.add( Pazar ); System.out.println(gunler); [Pazartesi, Salı, Çarşamba, Perşembe, Cuma, Cumartesi, Pazar] ArrayList kullanımına yönelik bir örnek //arraylist1.java import java.util.arraylist; public class arraylist1 public static void main(string[] args) ArrayList isimler=new ArrayList(); ArrayList<String> bolumler=new ArrayList<String>(); ArrayList<Integer> tamsayilar=new ArrayList<Integer>(); isimler.add("ahmet"); isimler.add("eren"); isimler.add("nihan"); isimler.add("cemre"); isimler.add("celal"); bolumler.add("bilgisayar"); bolumler.add("elektrik"); bolumler.add("muhasebe"); bolumler.add("haberleşme"); tamsayilar.add(10); tamsayilar.add(20); tamsayilar.add(30);

tamsayilar.add(40); System.out.println("isimler listesinin ilk elemanı :" +isimler.get(0)); System.out.println("isimler listesinin son elemanı :" +isimler.get(isimler.size()-1)); isimler.set(0,"ali"); //0 nolu eleman değiştirildi. System.out.println("isimler dizi listesi :\n" + isimler); System.out.println("İsimler\n----------"); for(int i=0;i<isimler.size();i++) System.out.println("Eleman No :" + i + "-" + isimler.get(i)); System.out.println("\nBölümler\n----------"); for (String eleman:bolumler) System.out.println(eleman); int toplam=0; for(int j=0;j<tamsayilar.size();j++) toplam+=tamsayilar.get(j); double ortalama=toplam/tamsayilar.size(); System.out.println("Sayılar :"+tamsayilar+" Toplamı:"+toplam + " Ortalaması :"+ortalama); //Class sonu isimler listesinin ilk elemanı :Ahmet isimler listesinin son elemanı :Celal isimler dizi listesi : [Ali, Eren, Nihan, Cemre, Celal] İsimler ---------- Eleman No :Ali Eleman No :Eren Eleman No :Nihan Eleman No :Cemre Eleman No :Celal Bölümler ---------- Bilgisayar Elektrik Muhasebe Haberleşme Sayılar :[10, 20, 30, 40] Toplamı:100 Ortalaması :25.0

ArrayList Class ına ait bazı metodlar Metot Açıklama boolean add(object listeelemanı) listeelemanı değerini dizi listesine ilave eder. void add(int indexno, Object listeelamanı) listeelemanı değerini, indexno ile belirtilen yere yerleştirerek ilave eder. boolean addall(collection koleksiyon) koleksiyon ile belirtilen bir diziyi dizi listesinin sonuna ekler. boolean addall(int indexno, Collection koleksiyon ile belirtilen bir diziyi dizi koleksiyon) listesinin indexno pozisyonundan sonra ekler. void clear() Dizi listesinin tüm elemanlarını siler. boolean contains(object deger) deger ile verilen bilgiyi dizi listesinde arar eğer bulursa true değerini, aksi durumda false değerini döndürür. boolean containsall(collection koleksiyon ile verilen dizinin tamamını dizi koleksiyon) listesinde arar eğer bulursa true değerini, aksi durumda false değerini döndürür. void ensurecapacity(int kapasite) kapasite ile verilen değer ile dizi listesinin kapasitesini arttırır. Object get(int indexno) indexno ile verilen eleman numarasına denk gelen değeri döndürür. int indexof(object listeelemanı) listeelemanı ile belirtilen liste elemanının index numarasını sayısal olarak döndürür. Eğer -1 değerini döndürürse listeelemanı dizi listesinde bulunmamaktadır. boolean isempty() Eğer true değeri dönerse dizi listesi herhangi bir eleman içermemektedir. boolean remove(int indexno) boolean remove(object listeelemanı) boolean removeall(collection koleksiyon) boolean retainall(collection koleksiyon) Object set(int indexno, Object listeelemanı) int size() Object[] toarray() Object[] toarray(tip[] dizi) void trimtosize() indexno ile verilen pozisyondaki elemanı dizi listesinden kaldırır. listeelemanı ile verilen elemanı dizi listesinden kaldırır. Koleksiyon ile verilen diziyi tüm elemanları ile birlikte dizi listesinden kaldırır. Koleksiyon ile verilen dizinin haricindeki tüm elemanları dizi listesinden kaldırır. indexno ile verilen pozisyondaki değerin yerine listelemanı değerini aktarır. Dizi listesinin eleman sayısını döndürür. Dizi listesinin elemanlarını bir dizi nesnesi olarak döndürür. Dizi listesinin elemanlarını Tip ile verilen bir dizi nesnesi olarak döndürür. Dizi listesinin boyutunu eleman sayısına göre kırpma işlemini yapar.

ArrayList metotlarının kullanımına yönelik bir örnek uygulama //arraylistmetot.java import java.util.*; //Tüm java.util kütüphanesi programa dahil edildi public class arraylistmetot public static void main(string[] args) ArrayList isimler=new ArrayList(); ArrayList sayilar=new ArrayList(); isimler.add("ali"); isimler.add("celal"); isimler.add("nihan"); isimler.add(1,"irfan"); System.out.println(isimler); sayilar.add(10);sayilar.add(20);sayilar.add(30); isimler.addall(sayilar); //sayilar dizi listesi isimler dizi listesine eklendi System.out.println(isimler); sayilar.clear(); //sayilar dizi listesinin içeriği silindi System.out.println(sayilar); sayilar.add(10);sayilar.add(20);sayilar.add(30); if (isimler.contains("ali")==true) System.out.println("Ali, isimler dizi listesinde"); else System.out.println("Ali, isimler dizi listesinde değil"); if (isimler.containsall(sayilar)==true) System.out.println("sayilar dizi listesi, isimler dizi listesinde"); else System.out.println("sayilar dizi listesi, isimler dizi listesinde değil"); isimler.ensurecapacity(20); //isimler dizi listesinin eleman sayısı 20 ye çıkarıldı System.out.println("isimler in ilk elemanı :" + isimler.get(0)); System.out.println("Celal'ın eleman numarası :"+isimler.indexof("celal")); if (isimler.isempty()==false) System.out.println("isimler dizi listesi boş değil"); isimler.remove(0); //Ali, dizi listesinden çıkarıldı System.out.println(isimler); isimler.add(0,"ali");

//0 nolu yere eklendi isimler.remove("celal"); //Celal, dizi listesinden çıkarıldı System.out.println(isimler); isimler.removeall(sayilar); //isimler, dizi listesinden sayilar dizi listesi çıkarıldı System.out.println(isimler); isimler.addall(sayilar); isimler.retainall(sayilar); //sayilar dizi listesinin dışındakiler çıkarıldı System.out.println(isimler); isimler.add("ali"); isimler.add("celal"); isimler.add("nihan"); isimler.add(1,"irfan"); isimler.set(1,"ömer"); //1 nolu eleman Ömer olarak değiştirildi isimler.trimtosize(); //isimler dizi listesi boş elemanlardan temizlendi System.out.println("isimler\n-----\n"+isimler+" Toplam eleman sayısı :"+isimler.size()); //Class sonu [Ali, İrfan, Celal, Nihan] [Ali, İrfan, Celal, Nihan, 10, 20, 30] [] Ali, isimler dizi listesinde sayilar dizi listesi, isimler dizi listesinde isimler in ilk elemanı :Ali Celal'ın eleman numarası :2 isimler dizi listesi boş değil [İrfan, Celal, Nihan, 10, 20, 30] [Ali, İrfan, Nihan, 10, 20, 30] [Ali, İrfan, Nihan] [10, 20, 30] isimler ------ [10, Ömer, 20, 30, Ali, Celal, Nihan] Toplam eleman sayısı :7 Wrapper Class ları Java'da herşey class olarak kullanılmaktadır. Java Class kütüphanesinde bütün primitive tiplerin Class karşılıkları bulunmaktadır. Bu Class lar Wrapper Class olarak adlandırılırlar. Primitive değişken tiplerini daha ileriye götürerek Class olarak kullanılma ayrıcalığını Java da bulabilirsiniz. Bu Class ın içerisinde Primitive tipiyle ilgili çeşitli özellik ve metodlar bulunur. Bu metodlardan bazıları, değişken tip çevrimi gibi metodlardır.

Primitive Tip int short long byte float double char boolean Primitive tiplerin Wrapper Class ları Wrapper Class ı Integer Short Long Byte Float Double Character Boolean Integer Class ı Dönüş Tipi static int static int static int static Class<Integer> Integer Class ına ait Özellikler Özellik Adı MAX_VALUE Değişken tipinin maksimum değerini döndürür. MIN_VALUE Değişken tipinin minimum değerini döndürür. SIZE Değişken tipinin kapladığı büyüklük değerini döndürür. TYPE Değişken tipinin tip adını döndürür. a ve b değişkenlerini primitive tip olarak tanıttık. int a=254; int b=1254; a ve b değişkenlerini Integer Class ı olarak olarak tanıttık. Artık bu Class a ait özellik ve metodları kullanabiliriz. Integer a=new Integer(254); Integer b=new Integer(1254); Integer Class ına ait özellikleri listeleyen uygulama; //intozellik.java public class intozellik public static void main(string[] args) Integer a=new Integer(254); Integer b=new Integer(1254); System.out.println("a degiskeni="+a+ " b degiskeni ="+b); System.out.println("Integer Class ozellikleri"); System.out.println("Maksimum Degeri :"+a.max_value); System.out.println("Minimum Degeri :"+a.min_value); System.out.println("Buyuklugu :"+a.size); System.out.println("Tip Adi :"+a.type);

Integer Class ına ait Metodlar Dönüş Tipi Metod Adı byte bytevalue() Integer nesnesinin değerini byte olarak döndürür. int compareto(integer diğer_integer) İki Integer objeyi numerik olarak karşılaştırır. Eğer eşitse 0 değilse -1 değerini döndürür. double doublevalue() Integer nesnesinin değerini bir double olarak döndürür. boolean equals(object nesne) Bu nesneyi bir başka nesne ile karşılaştırır. Eğer eşitse true, değilse false değerini döndürür. float floatvalue() Integer nesnesinin değerini bir float olarak döndürür. int hashcode() Integer nesnesi için Hash Kodunu (HashCode) döndürür.* int intvalue() Integer nesnesinin değerini bir int olarak döndürür. long longvalue() Integer nesnesinin değerini bir long olarak döndürür. static int parseint(string s) Bir String değeri, integer değere dönüştürür. static int parseint(string s, int taban) Bir String değeri, taban ile belirtilen sayı tabanını temel alarak integer değer dönüştürür. short shortvalue() Integer nesnesinin değerini short olarak döndürür. static int signum(int i) i parametresinin signum fonksiyon değeri olan işaret bilgisini döndürür. Eğer pozitifse 1, negatifse -1 döndürür. static String tobinarystring(int i) i parametresini String olarak ikili (binary) sayı tabanına dönüştürür. static String tohexstring(int i) i parametresini String olarak Onaltılı (Hexadecimal) sayı tabanına dönüştürür. static String tooctalstring(int i) i parametresini String olarak Sekizli (Octal) sayı tabanına dönüştürür.

String tostring() Integer nesnesinin değerini, bir String nesnesine dönüştürür. static String tostring(int i) i parametresini, bir String nesnesine dönüştürür. static String tostring(int i, int taban) i parametresini, taban ile belirtilen sayı tabanını temel alarak bir String nesnesine dönüştürür. static Integer valueof(int i) i parametresini, Integer olarak döndürür. static Integer valueof(string s) s parametresini, Integer nesnesi olarak döndürür. static Integer valueof(string s, int taban) s parametresini, taban ile belirtilen sayı tabanını temel alarak bir Integer nesnesine dönüştürür. Integer Class ına ait metodları gösteren uygulama; //intmethod.java public class intmethod public static void main(string[] args) Integer a=new Integer(128); Integer b=new Integer(1254); String s1="1500"; System.out.println("a degiskeni="+a+ " b degiskeni ="+b); System.out.println("Integer Class Metodlari"); System.out.println("byteValue Metodu:"+a.byteValue()); System.out.println("compareTo Metodu:"+a.compareTo(b)); System.out.println("doubleValue Metodu:"+a.doubleValue()); System.out.println("equals Metodu:"+a.equals(b)); System.out.println("floatValue Metodu:"+a.floatValue()); System.out.println("hashCode Metodu:"+a.hashCode()); System.out.println("intValue Metodu:"+a.intValue()); System.out.println("longValue Metodu:"+a.longValue()); int c=a.parseint(s1)+10; System.out.println("parseInt Metodu:"+c); int d=a.parseint("ff",16);//ff hexadecimal--> 255 decimal int e=a.parseint("11111111",2);//11111111 binary-->255 decimal int f=a.parseint("120",8);//120 octal sayısı-->80 decimal System.out.println("FF(16):"+d+ ",11111111(2):"+e+ ",120(8):"+f); System.out.println("shortValue Metodu:"+a.shortValue()); if (Integer.signum(a)==1) System.out.println("Sayi Pozitif"); else if (Integer.signum(a)==-1) System.out.println("Sayi Negatif"); System.out.println("toBinaryString Metodu:"+Integer.toBinaryString(255)); System.out.println("toHexString Metodu:"+Integer.toHexString(255)); System.out.println("toOctalString Metodu:"+Integer.toOctalString(255)); System.out.println("toString Metodu:"+a.toString()+" String oldu"); System.out.println("toString Metodu:"+Integer.toString(255)+" String oldu"); System.out.println("toString Metodu:"+Integer.toString(255,16)+" HexaDecimal");

System.out.println("valueOf Metodu:"+Integer.valueOf(a)); System.out.println("valueOf Metodu:"+Integer.valueOf("1250")); System.out.println("valueOf Metodu:"+Integer.valueOf("FF",16)); *Hashtable, dizilerde kullandığımız indis numaraları yerine bir string eşleştirmesi yapılan bir tablo kullanımıdır. Hashtable class ını kullanmaya başlamadan önce java.util.hashtable kitaplığını eklemeniz gerekmektedir. (import java.util.hashtable;) Örnek bir Hashtable uygulaması; //hashtable1.java import java.util.hashtable; public class hashtable1 public static void main(string[] args) Hashtable sayilar = new Hashtable(); sayilar.put("bir", new Integer(121)); sayilar.put("iki", new Integer(122)); sayilar.put("uc", new Integer(123)); Integer n = (Integer) sayilar.get("iki"); if (n!= null) System.out.println("iki = " + n);

Short Class ı Özellikler Short Class ı özellikleri, yukarıda belirtilen Integer Class ına ait Özellikler başlıklı tablosundaki özelliklerdir. Metodlar Short Class ın metodları, Integer Class ına ait Metodlar başlıklı tablosundaki metodlardır. Ayrıca bu metodlara ilave olarak aşağıdaki metodlar kullanılabilir. Dönüş Tipi Metod Adı static short parseshort(string s) Bir String değeri, short değere dönüştürür. static short parseshort(string s, int taban) Bir String değeri, taban ile belirtilen sayı tabanını temel alarak short değer dönüştürür. Long Class ı Özellikler Long Class ı özellikleri, yukarıda belirtilen Integer Class ına ait Özellikler başlıklı tablosundaki özelliklerdir. Metodlar Long Class ın metodları, Integer Class ına ait Metodlar başlıklı tablosundaki metodlardır. Ayrıca bu metodlara ilave olarak aşağıdaki metodlar kullanılabilir. Dönüş Tipi Metod Adı static long parselong(string s) Bir String değeri, long değere dönüştürür. static long parselong(string s, int taban) Bir String değeri, taban ile belirtilen sayı tabanını temel alarak long değer dönüştürür. Byte Class ı Özellikler Byte Class ı özellikleri, yukarıda belirtilen Integer Class ına ait Özellikler başlıklı tablosundaki özelliklerdir. Metodlar Byte Class ın metodları, Integer Class ına ait Metodlar başlıklı tablosundaki metodlardır. Ayrıca bu metodlara ilave olarak aşağıdaki metodlar kullanılabilir.