• Tidak ada hasil yang ditemukan

Java Ile Program Lama TTAT

N/A
N/A
Protected

Academic year: 2021

Membagikan "Java Ile Program Lama TTAT"

Copied!
230
0
0

Teks penuh

(1)

BY Ahmet Tolga Tat Sayfa 1

JAVA

ile programlama

Beta

Version 4.0

www.javadili.com

(2)

BY Ahmet Tolga Tat Sayfa 2

Aciklama

Bu dökümanlarin hazirlanis amaci Java ögrenmek isteyenlere yardimci olmak icindir.Bu dökümanlar tek basina kaynak olarak kullanilamaz.Kitap icersinde bir cok yazim hatasi vardir ve kitap hic bir ticari amac icin kullanilamaz.

Zamanim oldukca JDBC,Corba,RMI,XML JSP ve EJB konularina daha cok döküman hazirlayacagim.Kitap icersindeki hatalar icin bana mail atabilirsiniz. E-Mail:webmaster@turksoft.8m.com

Icindekiler

Java’yi taniyalim...5 Java nedir? ...5 Özellikler ...5

Geliºtirme & Uygulama ...9

Java Virtual Machine (JVM)...11

JDK Kurulumu ...12

Java’ya giris ...15

Ýlk Java uygulamamiz...15

Java’da girdi ve Cikti islemleri(I/O) ...20

Java’nin temel yapisi ...22

Degiskenler ve Türler...24

Tamsayilar...24

Karakterler(Characters)...25

Virgüllü sayilar(floating points)...25

Mantiksal degerler(booleans)...26 Strings islemleri...26 String Manipulasyonu ...29 StringBuffer Nesnesi...30 Deðiþkenlerin Ýlk Deðerleri...31 Diziler(Arrays)...32 Java’da operatörler ...34 Artýrma ve Eksiltme ...34 Karþýlaþtýrmalar ...34 Deðer Atamalar ...35

Operatör öncelik tablosu ...35

Özel Karakterler ...35

Java’da kontrol ...37

If,else kaliplari...37

Koºul kalibi...38

Switch kalibi ...38

Break ve Continue komutlarý ...42

Döngü kaliplari ...45

for döngüleri...45

while döngüleri ...47

do-while döngüleri ...48

(3)

BY Ahmet Tolga Tat Sayfa 3

Class(sinif) nedir? ...51

Sýnýf Olusturma ...52

Sýnýf Tanýmlanmasý...53

Üye degiskenlerinin tanimlanmasi...56

Method Tanimlanmalari...58

Kalitim Nedir? ...64

Methodlarý Yenilendirmek...66

Nesne(Object) Nedir ve Ne ise yarar? ...67

Mesajlar ...68

Java’da çöp toplama(Garbaje Collection)...69

Java’da alt sinif ve miras(Inheritance)...69

Java’da öne geçme ve aþiri yükleme ...71

This & Super ...71

Tanimsiz siniflar(Abstract Classes)...72

Java’da ulaþim kontrolü ...74

Static degiskenler ve Metodlar...75

Java’da paketler(Packages) ...75

Arayüzler(Interfaces)...77

Exceptions ...77

Java’da hata idaresi...77

Multithreading ...80

Giris ...80

Thread Nedir? ...81

Coklu Thread uygulamasi...82

Thread Öncelikleri ve Thread Zamanlamasi ...84

Thread eszamanlama ...86

Runnable Interface (Calistirilabilir Arayüz) ...92

Java Utilities...95

Vector Class'i ve Enumeration Özelligi ...95

Stack Class'i ...99

Hashtable Class'i ... 102

Properties Class’i... 105

Random Class'i ... 105

Bit Islemleri ve Bitwise Islemcileri... 106

BitSet Class'i ... 110

Exception Handling ...113

Java’da hata yakalamanin temelleri ... 113

Exception cesitleri... 114

Exception handling’deki blok tanimlari ... 115

Yeni Exception siniflari yapma ... 118

Java Metodlari ...121

Java 'da Program Modulleri... 121

Metodlar... 122

Rastgele Sayi Türetme ... 124

Recursion ve Iterasyon... 127

Method Overloading... 127

Applet Siniflarinin Metodlari ... 128

Java Lang ...129 java.lang.Math ... 129 java.lang.Character ... 130 java.lang.Integer... 131 java.lang.Float... 132 java.lang.String... 133 java.lang.StringBuffer ... 135 Java AWT ...137 Frame ... 137 Panel ... 138 Düzenleme Menejeri(layout manager) ... 139

www.javadili.com

(4)

BY Ahmet Tolga Tat Sayfa 4

FlowLayout Manager ... 139

Border Layouts(Kenar Çizgi Layoutlarý)... 140

Grid ve Grid Bag Layout ... 142

Insets(kümeler)... 143 Button... 143 Checkbox... 145 Radio Buttons ... 146 Menu’ler ... 147 Choice menus... 147 Text Fields... 150 Java Applet...162

Java Applet Temelleri ... 162

Multimedia ... 164

Audio Kullanýmý Metotlarý... 165

Çift Grafik Tamponlama... 169

Ses Parçalarý Yükleme ve Çalma ... 176

Imge Haritalarý... 177

Java Swing ...179

JFrame ... 179

Look and Feel ... 182

JLabel... 182 JButton ... 183 JPanel ... 185 Internal Frames ... 187 JToolBar ... 187 JLists... 188 JTree ... 191

Alert Dialogs (JOptionPane) ... 193

JPassword ... 199 JComboBox... 200 JTable ... 201 JScroll... 204 Networking ...206 Socket programlama ... 206 JDBC...221 JDBC nedir? ... 221 Corba ...226 Corba nedir? ... 226 Kaynakca ...230

www.javadili.com

(5)

BY Ahmet Tolga Tat Sayfa 5

Java’yi taniyalim

Java nedir?

Java programlama dilini ve onun çevresel gelisimini açiklayan bir dizi makale ile baslar.Birinci amaç olarak ,dilin tarihi hakkinda yayimlardan, mikrodalgalar ve çamasir makinelerinden... uzak duracagim.( Eger aranizda bunlardan herhangi biri ile ilgilenen varsa bunlari çoklu

kütüphanelerden hatta literatürden bulabilir.) Ayni Zamanda kocaman burunlu, üçgen vücutlu ve ellerini marimba'nin ritmine göre sallayan ,bana eski Amerikan bilim kurgu filmlerini hatirlatan Duke ' tan da (Java'nin maskotu) uzak duracagim.

Java fenomeni de zamaninda geçici popülerlik tanidi.Her seviyedeki bilgisayar magazini bunun hakk?nda yazd? , Java apletlerini geliitirmek üzere ürün satan birçok yazilim firmasi var ve çok az web sitesi Java apleti içermiyor. Bu seriler aras?nda mümkün oldu?u kadar , aslinda temel isler için basit fakat ustalikli kullanim için hayli karisik ve zor olan bu programlama dilini derinlemesine incelemeye ve ögrenmeye çalisacagim. Bu ilk birkaç makale ile amac?m?z genel olarak dile bir tanimlama saglamak böylece daha sonra apletler,a?- ili?kili planlar, JDBC,vb. gibi konular?n derinine inebiliriz. Sunu belirtmeliyim ki Java genel amaçli bir dildir,bunu yapmada oldukça popüler olmasina ragmen sadece web sayfalarina aplet yazmak için kullanilmak üzere yapilmistir.. Java'nin sadece görünüsüne takilamayz çünkü java apletlerinden çok daha ilginç bir çok alternatifi vardir.

Özellikler

Java Sun Microsystem 1991'de James Gosling, Patrick Naughton, Chis Warth, Ed Frank ve Mike Sherindan tarafindan olusturuldu. 1992 ve 1995 arasinda Bill Joy, Arthur Van Hoff,

Jonathan Payne, Frank Yellia, Tim Lindolm ilk prototipin olgunlasmasi üzerine isbirligi yaptilar. Tarihler gösteriyorki Java WWW (We Want WomensJ)'den önce ya da en azindan onunla eszamanli olusturulmustur .

Java'nin yapisi C'ye oldukça benzemektedir ve obje agirlikli karakteristikleri de ayni zamanda C++ 'a benzemektedir. Java uygun ve mantik çerçevesinde birbirini tutan bir programlama dilidir. C ve C++ arasindaki benzerlikler, Java'nin C++ '?n internet için bir versiyonu oldu?u izlenimini verebilir, fakat önemli teorik ve pratik farkliliklar vardir. Java özellikle C++ ile karsilastirilan obje kökenli parametreleri düzeltir ve aritir.

Internet Java'yi ortaya atti ve herkesin bildigi bir dil haline getirdi ve eszamanli olarak Java, siberuzayda ücretsiz edinilebilen objeler dizisini geni?letti?inden beri ?nternette derin etki yapdi.

Basit

Java dili text tabanlý bir proglama dilinin taþýdýðý fonksiyonelliði, gücü aynen taþýr fakat bunun yanýnda karmaþýk bir yapýya sahip deðildir. Temel olarak son derece basit bir yapýsý vardýr.

(6)

BY Ahmet Tolga Tat Sayfa 6

Günümüzdeki C ve C++ dilleri temel alýnarak dizayn edilen Java dili kolay ve hýzlý öðrenilebilen ve kullanabilen bir programlama dilidir.

Java dili objesel bir dildir, fakat C++ gibi diðer objesel diller deki bazý hata veya gereksizliklerden arýnmýþtýr. Dilin spesifikasyonu son derece küçük tutulmuþ ve programcýya kolaylýklar saðlanmýþtýr. Ve örneðin Garabage Collection gibi çok yararlý yeni özelliklerde eklemiþtir. Mesela C veya C++ daki karmaþýk pointer kavramý, gereksiz bir deðiþken olan struct, typedef, # dejine ve hafýzayý temizleme mantýðý uygulanmamýþtýr. Bunlarda zaten neredeyse programcýlýkta olan bug’larýn yüzde ellisinden kurtulmak demektir.

Nesneye Yönelik

Java dili C++ daki temel nesne yapýsýný korumaktadýr hatta buna bazý yenilikler getirmiþtir. Hatta basitlik kavramý için bazý özelliklerde kaldýrýlmýþtýr. Java dilinde veriler ve deðiþkenler dahil her þeye nesne olarak yaklaþýlýr.

Daðýtýk

Internet ve að çaðýnýn bir þartý olarak Java dilinin kendi TCP/IP yetenekleri ve hazýr fonksiyonlarý vardýr. Günümüzün popüler protokolleri HTTP ve FTP rutinleri bile Java’nýn kütüphanelerinde hazýrdýr. Bunlarda bize að üstünden bilgiye ulaþýrken sanki lokal bir dosyaya eriþircesine rahat kodlama yapmamýzý saðlar.Java’nin dagitik programlanmasi sayesinde Client/Server programlari gelistirilebilir.

Düzgün

Java dili gerek derleme gerekse de çalýþtýrma sýrasýnda bir çok hatayý kontrol eder. Deðiþken tiplerini kontrol etme, hafýzanýn temizlenmesi (Garbage Collection), Null Pointer ve Array (Dizi) uzunluðu kontrolü ve de Exceptions gibi.

Platform Baðýmsýz

Yine Java dilini að yapýlarýnýn vazgeçilmez bir parçasý yapmak için; Java derleyici programýnýzý derlediði zaman kaynak kodumuzu, yapýdan baðýmsýz nesnesel bir dosya formatýna çevirir. Buna Java bytecodes diyoruz. Java Runtime sistemini bulunduran makineler bu bytecode’larý çalýþtýrabilir. Þu an günümüzde bir çok sistem için Java Runtime Environment (JRE) bulunmaktadýr.

Mimari-baðýmsýz: Java programlarý derlendikleri zaman byte-kod oluþturduklarý için, Java'yý destekleyen tüm platformlarda çalýþabilmektedirler. Bir Java programýnýn yeni bir makinaya taþýndýðýnda tekrardan derlenmesine gerek yoktur. Java dili tüm bilgisayar sistemlerinde aynýdýr. Örneðin basit veri tipleri adýný verdiðimiz integer bir sayý her zaman 32 bit, long ise 64

bit olarak gösterilmektedir. Diðer dillerde ise bu durum böyle deðildir, derleyiciden derleyiciye bu veri tiplerinin gösterimi deðiþiktir.

Özetle Java kaynak kod derlenince bytecode’lar oluºur. Bytecode’lar sanal bir makine olan Java Virtual Machine’de (JVM) çalýþtýðý varsayýlýr ve iþlemde makineye baðýmlý bir çalýþma aný hata ayýklayýcýsý yani bir tercümanla olur. Bu JVM mantýðýyla hareket eden programa Java Interpreter diyoruz.

JVM, yazýlým ile gerçek bir makinede emüle edilen sanal bir makinedir. Bu sanal makine için kullanýlan kodlar iþte .class dosyalarýnda duran bytecode’lardýr. Her yazýlan Java kaynak kodu derlenirken iþte bu ortak sanal makine için derlenir. Bu makinenin belirli komut setleri (týpký

www.javadili.com

(7)

BY Ahmet Tolga Tat Sayfa 7

gerçek bir CPU’nun olduðu gibi) hafýza alanlarý, stack’i vardýr. Ýþte bu mantýk Java’nýn platform baðýmsýzlýðý yaratýr. Ve iþte hangi gerçek makinede bir yazýlým ile sanal bir JVM yaratýlýrsa o makinede Java ile yazýlmýþ program çalýþabilir.

Güvenli

Java dili Pointerlarýn kullanýcýdan kullanýmýný almak, hafýza adreslemeyi sadece çalýþtýrma sýrasýnda yapmak gibi kavramlarla güvenliði geliþtirmiþtir. Bunun yaný sýra Java Interpreter da JVM kodlarýnýn yüklenmesi ve yoklanmasý sýrasýnda çok çeþitli güvenlik unsurlarý barýndýrmaktadýr. Java Interpreter’ýn (tercüman) üç ana görevi vardýr.

§ Kodu yüklemek § Kodu kontrol etmek § Kodu çalýþtýrmak

Kodu yükleme aþamasýný Class Loader yani sýnýf yükleyici halleder. Bu aþamada programýn çalýþmasý için gerekli tüm class’lar (sýnýflar) çaðrýlmaya baþlanýr, fakat mutlaka yerel olarak mý yoksa uzak uçtan yani að kaynaklarýndan mý aldýðýný tutar. Buda çok önemli bir problem olan Truva Atý uygulamalarýn önünü keser çünkü her zaman önce lokal yüklü ve hazýr class’lar çek edilir.Hafýzada yer seçimi Interpreter tarafýndan yapýldýðý için iþletim sistemine kayma gibi sorunlar ortadan kalkar. Ayrýca kodun kontrolü sýrasýnda Interpreter bir çok hatayý kontrol eder. Genel olarak bytecode’larýn JVM için uygun olup olmadýðýný kontrol eder.

Taþýnabilir

Temel taþýnabilirlik olan platform baðýmsýzlýðý, tema olarak makinelerin iþleyiþ tarzý ve donanýmýnýn farklý olduðu ortamlarda da ayný kodu çalýþtýrabilmektir. Fakat ek unsurlarda söz konusudur, her ayný ortam için tüm kavramlar aynýdýr. Hepsinde Int (integer) kavramý ve boyutu aynýdýr. Hepsinde grafiksel kullanýcý arabirimi için Java’nýn kendi grafiksel arabirim kiti kullanýlmaktadýr. Bunun adý Abstract Windowing Toolkit (AWT)’dir.

Performans

Ýþte belki de Java dilinin zorlandýðý tek nokta. Performans denince tabii ki süre kavramý ön plana çýkýyor yani Java derleyicisinin ve Java Interpreter’in hýzý. Derleyicinin özellikle C++’a göre biraz daha yavaþ olduðu kesin fakat daha fazla görevi olduðunu ve ek avantajlar getirdiði için kabul edilebilir. Java Interpreter ise yani esasýnda bunu Java programlarýnýn çalýþma hýzý þeklinde de yorumlayabiliriz; C++’a göre ilk zamanlar da bayaðý yavaþtý. Zaten bu beklenen bir olaydý çünkü C ile yazýlmýþ program direkt CPU ‘da çalýþmaya baþlarken, önce Java Interpreter yani tercüman kendi açýlýyor daha sonrada aldýðý her kodu tercüme edip CPU’da gerekli iºlemi yapýyor. Fakat Java Interpreter’inin son sürümü ilk versiyonundan yüzde elli daha hýzlýdýr, bu da demektir ki Java’yý hýzlandýrma çalýþmalarý devam ediyor. Hýz için bir çözüm de Java Runtime Compiler, yani Java kaynak kodumuzu derlediðinizde onu bytecode’a deðil de direkt makine koduna çeviriyor. Ama tabii böyle bir seçimde platform baðýmsýzlýðýndan vazgeçmiþ bulunuyorsunuz.

(8)

BY Ahmet Tolga Tat Sayfa 8

Küçük

Bir programlama dili olarak Java diðerlerine kýyasla oldukça küçüktür. 4 MB’lýk RAM'e sahip tüm sistemlerde çalýþmaktadýr. Java yorumlayýcýsý 500-600 KBlýk yer kaplamaktadýr.

Saðlam

PClerde çalýþan herkes, durup dururken sistemin nedensiz bir þekilde göçtüðüne þahit olmuþlar ve bu yüzden emek verilen bir sürü çalýþmanýn boþa gittiðini görmü ºlerdir. Java

sistemi, belleðe her eriþim esnasýnda belleðin bu bölgesini kontrol eder ve geçerli bellek alaný olup olmadýðýný kontrol eder. Java programlarýnda 'bug' lar oluþsa bile 'exception

handler' larla problemin nerede olduðunu bildirir düzeltmeye çalýþýr. Java bellekðin yalnýz kendisine izin verilen alanýnda çalýþabilir.

Hizli!

Java programlama dili C'den daha yavaº bir dildir.Fakat Just- in-Time(JIT) Compiler sayesinde java C/C++ gibi dillerle es degerdedir. Bu derleyici ile Java artýk yorumlanan bir dilin yavaþlýðýný býrakýp alýþýlagelmiþ derlenen dillerin hýzýna kavuþmasý

beklenmektedir.

Hizlilik bakimindan bakildiginda Java en üstte yani en yavas olan dillerden bir tanesidir.

Multi Threaded(Paralel kullanim)

Büyük Ana programýn alt parçacýklarý olan ve ondan baðýmsýz hareket eden çocuk programcýklara thread diyoruz. Bunun destekleyen dile de Multi Threaded diyoruz. Java bu özelliði desteklemesinin yaný sýra C ve C++’a göre threadler çok daha düzgün, sade ve temiz bir yapýya sahiptirler. Sonuçta threadlerin kullanýldýðý bir program, ayný anda birden fazla aktiviteye izin verir. Meselâ neredeyse tüm chat (sohbet) programlarý multi threaded’dýr. Çünkü arkadaþýnýzdan mesaj gelirken sizi yazý yazabilirsiniz. Fakat unutmamak lazým bu özellik iºletim sisteminize de baðlýdýr. Makine Dili(0ve1) Assembler Java C++ C

www.javadili.com

(9)

BY Ahmet Tolga Tat Sayfa 9

Tek-kalýtlý

Java, tek-kalýtlý (single inheritence) sýnýf yapýlarýný destekler. Bazý diller çoklu-kalýt sýnýflarýný desteklemektedir, ancak bu yazýlan programlarýn çok karmaþýk ve çözülmesi zor

olmalarýna neden olmaktadýr. Ayný zamanda arayüzleri (interface) desteklemektedir. Bunlara abstract sýnýf adý verilmektedir. Bu tip sýnýflar, programcýlara, metotlarýn nasýl

uygulanacaðýnýn sonradan belirleneceði sýnýflar yaratýlmasýna izin verir. Bir sýnýf, birden fazla arayüz oluºturabilmektedir. Böylelikle gerçek çoklu-kalýt ortamlarý kolaylýkla saðlanmýþ

olmaktadýr.

Byte-Coded

Byte-kodlar diðer makinalarýn komut setlerine benzerler, yalnýz tek bir makinaya tabi deðildirler ve içlerinde kendi veri tiplerini onaylayan ek tip bilgilerini içerirler. Java

uyumlu web tarayýcýlarý diðer ortamlarda yaratýlan form/grafik/resim gibi objelere nasýl görürlerse, Java appletlerinide ayný þekilde görürler. Java byte-kodlarýndan oluþan byte-kodlar tarayýcýnýn kaynak kodu içine gömülürler. Bu aþamadan sonra ilk önce onaylanýrlar, sonra da çalýþtýrýlýrlar.

Dinamik

Java dili nesne teknolojisinden elden geldiðince yararlanýr bu yüzden derleme sýrasýnda programýmýzda kullandýðýmýz modüller onunla birleþmeyecektir. Sadece çalýþma sýrasýnda dýþarýdan çaðrýlacaktýr. Bu sayede yeni veya geliþtirilen temel kütüphanelere programýmýz hemen adapte olacaktýr. Bu temel kütüphanelere yani class’lara API (Application Programming Interface) paketleri diyoruz. Bu dinamikliðin bir yönü de çalýþma sýrasýnda dýþarýdan ihtiyaç duyduðumuz bir parçayý hiç zorlamadan að üstünden alabilmedir.

Java ve Web

Bilindiði gibi Web sayfalarý ne kadar canlý gözükürlerse gözüksünler, ses veya animasyonlarda olsa sonuç olarak aktif yani çalýþan bir yapýya sahip deðildirler. Ýþte Java’nýn özellikle Web için tasarlanan Applet yapýsý buna bir alternatiftir. Bir web sayfasý üstünde bulunan ve tarayýcý tarafýndan çalýþtýrýlýp interaktif olan Java programlarýna Applet diyoruz.

Geliºtirme & Uygulama

Sun tarafýndan geliþtirilen ve Java’nýn derlenmesini ve geliþtirmesini saðlayan programlar grubuna veya ortamýna JDK (Java Development Kit) denir. Bugün Sun dýþýndaki firmalar tarafýndan üretilen diðer grafiksel derleyiciler bile en alt planda bu temel derleyiciyi kullanýr. JDK text tabanlý komutlar grubudur. Genelde JDK’nýn versiyonu Java’nýn yani dilin kendisinin geliþmiþliðini gösterir. Ýlk zamanlarda JDK 1.0.x ler vardý. Fakat 1.0 dönemi çok sürmedi hemen sonra JDK 1.1.x ler çýktý. Bugün Javanýn yani JDK’nýn en son resmi sürümü JDK 1.1.6’dýr. Ama

www.javadili.com

(10)

BY Ahmet Tolga Tat Sayfa 10

þu anda JDK 1.2 beta 4 bile Sun’ýn sitesinde bulunmaktadýr. Bütün bu süreç Java’ya verilen önemi göstermektedir. Sonuç itibarýyla Java ile yazýlmýþ programlarý iki grupta toplayabiliriz. Bir yalnýz baþýna çalýþabilen uygulamalar.(Applicatýons). Fakat bunlar için biliyorsunuz ki mutlaka bir Java ortamý bulunmak zorunda. Ýþte bu ortama JRE (JavaRuntime Environment) diyoruz. Esasýnda JDK bulunan her makinede Java programlarý çalýþabilir. Ama JRE, JDK’ya göre daha küçük ve ha fiftir ve kullanýcý amaçlý makinelere sadece onu yüklemek yeterli olacaktýr. Her yeni JDK versiyonu çýktýðýnda onun birde ayný JRE versiyonu çýkmaktadýr. Ýkinci tip Java uygulamalarý ise web sayfasý üzerinde çalýþan Applet’lerdir. Appletlerin çalýþabilmesi için çaðrýldýklarý tarayýcýnýn mutlaka Java desteði olmak zorundadýr. Hem kendi Java’da yazýlan hem de Applet kavramýný anlatabilmek için zorunlu olarak Sun tarafýndan üretilen Java destekleyen tarayýcý HotJava’dýr. Bugün son kullanýcý için pek popüler olmayan HotJava geliþtiriciler için önemlidir. Çünkü ayný firma tarafýndan yazýldýðý için Java’nýn son versiyonlarýna ilk uyum saðlayan tarayýcýdýr.

Java ortaminin gelistirilmesi

Daha önce belirtildigi gibi gelisme araçlari /bin dizininde yeralir :

javac :Java kaynaklarini baytkodlarina çeviren java derleyicisi. java :Java yorumlayicisi . Java baytkodlarini çalistirir.

jre : Java'ya benzer baska bir yorumlayici ,fakat kullanicilar için oldugu düsünülmesine ragmen tüm seçeneklerin kullanilir olmasi istenmemektedir. appletviewer: apletleri test eder veçalistirir. jdb: hata düzeltici

javap: Java da derlenen baytkod dosyalarinin ayiricisi.

javadoc : dökümantasyon jeneratörü , genel ve korunmus siniflari, arayüzleri , yapilari, methodlari ve alanlari tanimlayan HTML sayfalarini yarat?r.Ayni zamanda sinif hiyearasisini ve üyelerin içinde bulundugu indeksi yapar.

javah : Java programlarinin bilinen metodlarina eklenen araç ( C de ) jar: Java siniflarini ve kaynaklarini bir Jar arsiv dosyasinda saklar . javakey : Dijital imzalari koruyan araç.

updateAWT : bir basvurudaki AWT1.02 metodu ile degistirilen isimleri güncellestirir. Belli bir dizin yap?s? ile glitch' ler olmadan çalisirken /usr/local/JDK1.1.3/bin 'i PATH de?i?kenine ataman?z? tavsiye ederim .Eger kullan?labilen sistem geli?me çevresini daha geni? yapmak istiyorsan?z /etc/profile dosyas? içindeki Path degi?kenini kar??t?r?n.

Karakteristikler

Devam etmeden önce , kendimize Java nedir sorusunu sormamiz gerekir. Cevaplamak için JDK'nin elkitabinda yazdigi gibi Java'n?n bir programlama dili ve ayni zamanda bir platform oldugunu gözönünde bulundururuz. Bir programlama dili olarak Java asagidaki

karakteristiklerle beraber yüksek seviyeli bir dildir. (ayni noktada onlari detayli olarak inceleyebiliriz ):

Dikkatimizi çeken ilk sey Java'nin yorumlanmsi olmasidir.Java kaynaklarinin bir objeyi

baytkodlar olarak yapmasi için bir önceki daha düsük seviyede ki derleyiciye ihtiyaci olmasina ragmen , degisik platformlarda yorumlanabilir .

(11)

BY Ahmet Tolga Tat Sayfa 11

" Birkez yazip herzaman çalistirabildigimiz " Java baytkodlarina tesekkür ederiz. Java programlarini bir platformda derleyebilir ve JVM (Java Virtual Machine ) aracini içeren tamamen farkl? ba?ka bir yap?da çal??t?rabiliriz. Örne?in bir Java program? Windows NT platformunda derlenebilir ve bir Sun Ultra Solaris 'de veya bir Linux platformunda sorun olmadan çalisabilir .

Genel olarak bir platform uygulamanin çalistigi bir donanim/yazilim ortamidir . Bununla beraber Java için bir platform çalistigi bir yazilim ortamidir . Her Java platformu bir donanim ortaminda çalismak zorundadir.

Bir Java platformunun iki bölümü vardir :

Java Virtual Machine (JVM)

JVM , Java öncelikli derlenen programlarin çalistirildigi açik bir bilgisayardir.Küçük ve basit olarak dizayn edilmistir çünkü dü?ünülen onu her yere indirmektir . Bu basitlik onu tüm varolan platformlara ta??may? mümkün kiliyor , böylece hepsine ortak bir yazil?m sa?l?yor ve her kar???k a? sisteminde ( Internet gibi ) büyük ölçüde tasinabilirlik sorununu ortadan

kaldirir.Hayal edilebildi?i gibi bu, durdurulamayan teknoloji için yaklasik bir nedendir. Bununla beraber sanal makine bir yaz?l?m tabakas? olarak görülmemelidir, fakat isminin belirtti?i gibi, bu dolu bir bilgisayar sistemi olmaya çalisiyor,yavas yavas gerçek Java makinelerini , kredi kartlari ,TV dekoderlerini ve benzerlerini destekleyen Java Çiplerini marketlerde görüyoruz .

Uygulamali Program Arayüzü (API)

API (Application Programmer's Interface), kýsaca Uygulama Programcýsýnýn (siz) kullanacaðý bütün function'larý (iþlevleri) içerir.

Java'nin API 'si grafiker kullanici arayüzü (GUI ) gibi özellikleri destekleyen genis bir yazilim bile?enleri koleksiyonudur . Bunlar kütüphanelerde gruplandirilmistir. ( Java terminolojisini kullanan Java paketleri ).Bu paketler sayesinde çok bilinen web Apletlerinin yanisira, Java'yi daha birçok uygulamada kullanmak mümkündür.Web serverlarini dizayn etmek mümkündür, örnegin, vekiller, ileti serverlari, IRC serverlari, ve internet ile ilgili hayal edilebilecek herhangi birseyler...(JSP’ler gibi)

API:paketlerini degisken gruplar içerisinde siniflandirabiliriz :

Temel: objeler, matrisler, sayilar, girdi ve çikti , bilgi yapilari, sistemin özellikleri, tarih, zaman,vb.

Appletler :Fonksiyon seti ve Java apleti yapmak için kullan?lan özellikler. Ag çalismasi:URL'ler, TCP, UDP, soketler, IP adresleme.

Uluslararasilastirma: yerel tanimlamalara kolayca adapte olabilen kodlar yazmaya yardim eder ve yerel dilde görüntüle nir.

Güvenlik:düsük ve yüksek seviye,dijital imzayi içerir, genel ve özel anahtarlar,kontrol ve sertifikaya giris.

Yazilim Bölümleri: JavaBeans olarak bilinir.

Veritabanlari: Çok sayida iliskili veritabanina girisi saglar .

(12)

BY Ahmet Tolga Tat Sayfa 12

Bu ,Java programlama dilini ve onun çevresel gelisimini açiklayan bir dizi makale ile baslar.Birinci amaç olarak ,dilin tarihi hakkinda yayimlardan, mikrodalgalar ve çamasir makinelerinden... uzak duracagim.( Eger aranizda bunlardan herhangi biri ile ilgilenen varsa bunlar? çoklu kütüphanelerden hatta literatürden bulabilir.) Ayni Zamanda kocaman burunlu, üçgen vücutlu ve ellerini marimba'nin ritmine göre sallayan ,bana eski Amerikan bilim kurgu filmlerini hatirlatan Duke ' tan da (Java'nin maskotu) uzak duracagim. Java fenomeni de zaman?nda geçici popülerlik tasidi.Her seviyedeki bilgisayar magazini bunun hakk?nda yazd? ,Java apletlerini geli?tirmek üzere ürün satan birçok yaz?l?m firmas? var ve çok az web sitesi Java apleti içermiyor. Bu seriler arassnda mümkün oldugu kadar , aslinda temel isler için basit fakat ustal?kl? kullan?m için hayli karisik ve zor olan bu programlama dilini derinlemesine incelemeye ve ögrenmeye çalisacagim. Bu ilk birkaç makale ile amacimiz genel olarak dile bir tanimlama saglamak böylece daha sonra apletler,a?- iliskili planlar, JDBC, vb. gibi konularin derinine inebiliriz. sunu belirtmeliyim ki Java genel amaçli bir dildir,bunu yapmada oldukça popüler olmasina ragmen sadece web sayfalarina aplet yazmak için kullan? lmak üzere

yapilmistir. Java'nin sadece görünüsüne takilamayiz çünkü java apletlerinden çok daha ilginç bir çok alternatifi vardir. Cünkü Java Applet’ler Javanin %5‘ni olusturur.

JDK Kurulumu

JDK nedir?

JDK nedir?

Java ile geliºtirme (development) yapmak için Java Development Kit'e (JDK) ihtiyacýnýz var. Bu paket Java ile gelistirme yapmak için bütün araçlarý içeriyor..

Bu tool'lara editor (düzenleyici) dahil deðil. Piyasada bir çok GUI Java Editor'ý var. Bunlar genelde ücretli. Ayrýca oldukça güçlü bir makinede bile oldukça aðýr çalýþýrlar. Programýn nasýl çalýþtýðýna zaman harcayýp kafa patlatmanýz gerekir; üstelik, en önemlisi, kodun içine

kendiliðinden bir sürü kod eklerler, bu da yazdýðýnýz kodu anlamamanýza yol açar. Bence bu gibi araçlar Java'ya yeni baþlamýþ olanlar için uygun deðil .Bana 'hangi Java editor'u tavsiye edersin' diye sorarsanýz,size aslýnda geliþmiþ bir text editor (metin düzenleyici) olan, fakat Java dahil bir çok dilde programlama yapmanýzda kolaylýk saðlayan EditPlus'u tavsiye ederim.

JRE nedir?

JRE (Java Runtime Enviroment) Java Virtual Machine, Java Platform çekirdek class'larýný ve destekleyici dosyalar gibi paketleri içerir. Yani development yapmak için gerekli olan derleyici (compiler), debugger gibi paketleri içermez. JRE zaten JDK'nýn içinde vardýr.Dolayýsýyla, JRE'yi indirmeniz GEREKMEZ. Böyle bir paketin oluþturulmasýnýn nedeni ise basit: Yazdýðýnýz ve derlediðiniz (compile) Java class'larýný herhangi baþka bir makinede çalýþtýrmak için bu pakete ihtiyacýnýz olabilir.

1- Dosyalarý Birleþtir

.

(13)

BY Ahmet Tolga Tat Sayfa 13

Eðer dosyalarý 1.44 MB'lýk 15 dosya olarak indirdiyesniz, öncelikle dosyalarý birleþtirmeniz gerekiyor. Eðer tek bir dosya halinde indirdiyseniz 2. bölüme geçiniz. Download ettiðiniz dosyalarýn isimleri: • jdk1_2_2-win-a.exe • jdk1_2_2-win-b.exe • jdk1_2_2-win-c.exe • jdk1_2_2-win-d.exe • jdk1_2_2-win-e.exe • jdk1_2_2-win- f.exe • jdk1_2_2-win- g.exe • jdk1_2_2-win- h.exe • jdk1_2_2-win- i.exe • jdk1_2_2-win-j.exe • jdk1_2_2-win-k.exe • jdk1_2_2-win- l.exe • jdk1_2_2-win- m.exe • jdk1_2_2-win- n.exe • jdk1_2_2-win-o.exe

olmalý. Daha sonra jdk.bat'ý dowload edip yukarýdaki dosyalar ile ayný klasöre kopyalayýp üstüne çift týklayýn.Böylece tek, bütün bir dosya oluþmuþ oldu. Bunda sonra 2. bölüme geçebilirsiniz. 2 -Kuruluma baºla

Kuruluma, aynen diðer Windows uygulamalarýnda olduðu gibi, jdk1_2_2-win.exe adlý dosyaya çift týklayarak baþlýyoruz. Ýlk gelen ekranda Next'e, daha sonraki ekranda ise Yes'e týklýyoruz. Daha sonra gelen ekranda kurulum yapacaðýmýz klasörü girmemizi istiyor. Bu deðeri

deðiþtirebilirsiniz fakat daha ileride anlatacaðým bazý iþlemleri yapmada zorluklar

yaºayabilirsiniz, normali olan c:\jdk1.2.2 kalmasý daha uygundur. Daha sonra gelen ekranda tüm seçenekleri seçtikten sonra Next'e týklayý Böylece kurulum baþlamýþ oldu. Birçok dosyayý kopyaladýktan sonra JRE kurulumu için tekrar bir ekran

gelecek burada da Yes'e týklayýn. Daha sonra gelen ekranda dizini yine normalinde býrakýp Next'e týklayýn.Finish'e týklayýn.

3 - PATH ve CLASSPATH deðiþkenlerini ayarla

Bunlar CLASSPATH ve PATH adýný verdiðimiz ortam deðiþkenleridir. PATH bildiðimiz çalýþan dosyalarý arama listesidir. Yazdýðýmýz Java komutlarýnýn herhangi bir yerde çalýþmasý için bulunduklarý yerleri PATH olarak gösterilmesi lazýmdýr. CLASSPATH ise derleme sýrasýnda gerekecek temel kütüphanelerin, classlarýn yani API’lerin bulunduðu yeri gösterir. Autoexec.bat dosyasýndaki þu iki satýr herþeyi halledicektir. Böylece dosya kopyalama iþlemi tamamlanmýþ oldu. Þimdi bize bazý kolaylýklar saðlamasý için makinenizin çevre deðiþkenlerinde bazý deðiþiklikler yapacaðýz. Bu kýsýmda oldukça dikkatli olmak gerekiyor.

Önce sistem editörünü (system editor) çalýþtýrýyoruz.

Start ondan sonra Run'a týklayýp, gelen alana sysedit yazýn, Enter'a basýn.

(14)

BY Ahmet Tolga Tat Sayfa 14

Bu pencerelerden AUTOEXEC.BAT yazýlý olaný seçin. PATH ile baþlayan satýrý bulun. Bu satýrýn en sonuna ;C:\JDK1.2.2\BIN deðerini ekleyin.

Örnek: PATH

C:\WINDOWS;C:\WINDOWS\COMMAND;C:\JDK1.2.2\BIN Not: Eðer Windows 98 kullanýyorsanýz, PATH ile

baþlayan satýr olmayabilir. Bu durumda en alta aþaðýdaki satýrý ekleyin.

PATH C:\JDK1.2.2\BIN

Daha sonra ise en alta aþaðýdaki satýrý ekleyin SET CLASSPATH = .;c:\java

Daha sonra File'dan Save'e týklayýp System editor'ý kapatýn. (NOT: Sistem editöründe baþka herhangi bir deðerle oynamak sistemin bir daha açýlmamasýna neden olabilir. PATH deðiþkenini aktif hale getirmek için Start | Run'a týklayýp gelen alana c:\autoexec.bat yazýp Enter'a basýn. Bir DOS Pencresi açýlacak gerekli iþlemleri yapacak. Yaptýðýndan emin olmak için bir DOS

penceresi açýp(Start | Run a týklayýp gelen alana command yazýp entera basýn) path yazýp Enter'a basýn. Size path deðiþkeninin deðerlerini verecek. Bunlarýn arasýnda C:\JDK1.2.1\BIN'in olup olmadýðýný ve doðru yazýlýp yazýlmadýðýný kontrol edin.

Bu iºlem bize C:\JDK1.2.1\BIN dizini altýndaki programlarý(java, javac vb.) hangi dizinde olursak olalým çalýþtýrabilme olanaðýný erecek. Ayrýca CLASSPATH deðiþkeni ise yazacaðýmýz programlarý çalýþtýrmamýzda yardýmcý olacak.Böylece kurulum tama mlanmýþ oldu.

(15)

BY Ahmet Tolga Tat Sayfa 15

Java’ya giris

(Girelim bakalim...)

Ýlk Java uygulamamiz

Daha önceden de bahsettiðimiz gibi Java ile diðer dillerde olduðu gibi sýradan uygulamalarda yazabiliyoruz. Aþaðýdaki kýsacýk programýn amacý, ekrana „Merhaba Dunya!“ karakter dizisini yazdýrmaktýr.

Örnek:

//Java’ya hosgeldiniz

// ilk örnek java uygulamasý //Merheba Dunya

class MerhebaDunya{

public static void main (String args [ ] ){ System.out.println („Merhaba Dunya“);

} }

Açýklama:

Ýlk uç satýr yorum (comment) tabir ettiðimiz satýrlardýr.“//“ iþareti ile baþlayan satýrlar dikkate alýnmaz. Programcýnýn kendine veya grubuna hatýrlatmalarýdýr.Dördüncü satýr programýn adýnýn verildiði satýrdýr. Programýn kendisine de bir nesne gözüyle bakýldýðý için oda bir class olarak tanýmlanmýþtýr. Programýn kaynak kodunu kayýt ederken, bu ada

.java

uzantýsýný ekleyip kayýt etmelisiniz ve ayrýca derlendikten sonra bu isim

.class

isimli Java uygulamasý oluþacaktýr. En sondaki küme paranteziyle programýn baþladýðý görüyoruz.

(16)

BY Ahmet Tolga Tat Sayfa 16

Beºinci satýrda Java Interpreter’ýnýn çalýþtýracaðý ilk ve ana metodu görüyoruz. Diðer dillerde olduðu gibi burda da main fonksiyonuna bir dizi karakterler atanacaktýr. Bu örnekte komut satýrýndan argüman beklemiyoruz ama eðer; Java MerhabaDunya arg1 arg2 gibi komut yazýp ana fonksiyona arg1 arg2 gibi karakterler gönderseydik bunlar string (karakterler) dizisi olarak tanýmlanmýþ olan arg deðiþkenine atanacaklardý.

Public, main fonksiyonunun dýþ kullanýcýlara açýk olduðu ve buna Java InterPreter’ý da dahil

herkes tarafýndan eriþebileceðimiz belirtilir.

Static, main metodunun sadece bu uygulamaya ait olduðu ve bu uygulama nesneye yönelik

tarzda baþka bir uygulamaya çaðrýldýðýnda deðiþtirilemeyeceðini gösterir. Hafýzada ne kadar kullanýlýrsa kullanýlsýn hep tek kopya tutar.

Void,

main metodun ekrana basma iþlemi dýþýnda hiçbir sonuç geri döndürmediðini gösterir. Sondaki küme paranteziyle main metodunu baþlatmýþ bulunuyoruz.

System.out.println satiri ani zamanda System.out class’indeki yani sýnýfýndaki bir metodun yani println’in nasýl kullanýldýðýný gösterir. „Merheba Dunya“ yazýsýný standart çýkýþa yani ekrana yazdýrýr.

Sondan bir önceki parantez main metodunu ve en sondakide class Merhaba Dunya yani programý kapatýr. Uygulamamýzý sýradan bir text editörle yapabiliriz.

Önemli olan yazdýktan sonra onu MerhabaDunya.java olarak kaydetmemizdir. ªimdi javac komutuyla kaynak kodumuzu derleyebiliriz.

Eðer bu iþlem hiçbir sonuç vermezse demek ki her þey sorunsuz ve de artýk ayný dizinde MerhabaDunya.class isimli bytecode dosyanýz bulunmaktadýr. Çok genel iki sorun çýkabilir. Javac komutunu yani dosyasýný bulamayabilir ki bu PATH sorunudur. Veya en basit API’leri yani classlarý bulamadýðýný bildirir, bu da CLASSPATH sorunudur.

Uygulamamýzý çalýþtýrmak için komut satýrýna java komutuyla emir vermemiz yeterlidir.

java MerhebaDunya

javac MerhebaDunya.java

(17)

BY Ahmet Tolga Tat Sayfa 17

Bu komutta ekrana;

Merhaba Dunya karakter dizisini yazdýracaktýr.

Ýlk Java Appleti

Þimdiyse bir Web sayfasý üzerinde çalýþabilecek bir Java programý yani bir Applet yaza lým. Aþaðýda örnek appletimizi görüyorsunuz.

/***********Merheba Dunya Java Applet’i***************************/

import java.awt.Graphics;

import java.applet.Applet;

public class MerhebaDunya extends Applet

{

public void paint (Graphics g)

{

g.drawString ("Merheba Dunya!",30,50);

}

}

(18)

BY Ahmet Tolga Tat Sayfa 18

Sonraki iki satýrdaki import komutu sizin class’ýnýzda dýþarýdan kullanýlan class’larý mesela hazýr olan bazý API’leri almak veya çaðýrmak için kullanýlýr. Örneðin import edilen java.awt.Graphics class’ý çizim amaçlý kullanýlan bir sýnýftýr. Ve applet’imizle tarayýcý ekranýna yazý yazdýrmak için onu import edip daha sonra onun bir metodunu kullanýyoruz.

Yine ayný þekilde yeni bir applet yaratýrken onun bir çok özelliðini daha doðrusu applet tarzýný zaten hazýr olan applet class’ýndan alýyoruz. Önce ondan türememiz için onu import ediyoruz. (import java.applet.Applet) Daha sonra da kendi class’ýmýz olan MerhabaDunya’ý extends komutuyla applet olarak türetiyoruz. Burada küme paranteziyle applet’in kendisi baþlýyor.

Dokuzuncu satýrda applet’in hazýr bir fonksiyonu olan paint metoduna rastlýyoruz. Bu metod ekran çýktýsýyla ilgili olan ve az önce import ettiðimiz Graphics sýnýfýnda kullanýlan ve de üye diye tabir ettiðimiz yani extends ettiðimiz (türediðimiz) applet classýna ait olan temel bir metottur. Metot açýlýrken yazým olayýný azaltmak için Graphics g olarak tanýmlanýyor.Graphics sýnýfýna ait drawString adlý metotla ekrana „MerhebaDunya!“ yazdýrýyoruz. Önce paint metodunu daha da sonra applet’in kendisini parantezlerle kapatýyoruz.

Uygulamamýzý bir text editörle yazdýktan sonra týpký uygulamalarda olduðu gibi onu java uzantýlý ve class’ta tanýmlanan isimle kaydediyoruz. Burada örneðimizi MerhebaDunya.java olarak kayýt edelim. Kayýt iþleminden sonra yine ayný þekilde kaynak kodumuzu derliyoruz.

Fakat þimdi onu java komutu ile çalýþtýramayýz çünkü o bir uygulama deðil. Bu applet’imizi test için örnek bir web sayfasý yani HTML kodu üretmemiz lazým.

HTML dilinde, ya zdigimiz Java Appletini sayfaya çaðýrmak için <applet> komutunu kullanýrýz. Aþaðýda örnek web sayfamýzý görebiliriz.

<html> <head>

<title> Merheba Dünya Applet‘i</title> </head>

<body>

<p> ilk java appletim

<applet code=MerhebaDunya.class width=200 height=100> </applet>

</body> </html>

Yine standart bir text editörle(NotePad gibi) yazdýðýmýz bu dosyayý test.html olarak kayýt edelim. Java destekleyen herhangi bir tarayýcý ile lokal olarak bu sayfayý açtýðýmýzda applet’imizin sayfada çalýþtýðýný göreceksiniz. <applet> komutunda burada kullandýðýmýz „code“ parametresi

javac MerhebaDunya.java

(19)

BY Ahmet Tolga Tat Sayfa 19

çaðrýlacak Java Applet class’ýnýn adýný, width sayfadaki geniþliðini, height ise sayfadaki yüksekliðini verir.

Yine JDK’nýn bir aracý olan Appletviewer da applet imizi incelemek için kullanýlabilir. Komut satýrýndan

Komutu verildiðinde Appletviewer yukarida gördüðünüz gibi çalýþýp web sayfanýzýn içindeki sadece ama sadece applet’i gösterecektir.

Örnek:

//Asagidaki java Appleti oval seklinde "canim Türkiyem" yazar

import java.awt.*; import java.applet.*;

public class ovalyazi extends Applet {

static final String message="Canim Türkiyem!"; private Font font;

public void init() {

font=new Font("Impact",Font.BOLD,48); }

public void paint(Graphics g) { g.setColor(Color.white); g.fillOval(10,10,300,100); g.setColor(Color.blue); g.drawOval(10,10,330,100); g.drawOval(9,9,332,102); g.drawOval(8,8,334,104); g.drawOval(7,7,336,106); //Text kismi g.setColor(Color.blue); g.setFont(font); g.drawString(message,40,75); } }

appletviewer test.html

www.javadili.com

(20)

BY Ahmet Tolga Tat Sayfa 20

Java’da girdi ve Cikti islemleri(I/O)

Cikti islemleri(Input)

System.out akisina print ve println islevlerini kullanarak cikti gönderebiliriz. Örnegin;

System.out.println(“Canim Türkiyem“);

Yazarsak bilgisayarin ekranindan veya konsoldan Canim Türkiyemciktisini aliriz.

görürüz.Eger ciktimizi ekrana yazdirdiktan sonra bir sonraki cikti icin alt satira gecmesini istemezsek print islevini kullaniriz.

Örnegin;

System.out.print“canim „); System.out.print(„Türkiyem“);

Yazisini ekrana ayni satirda Canim türkiyem olarak yazar.

Cikit islemlerinin paremetleri yalnizca tek bir dizigi oldugu gibi ,bir deyimde olabilir.eger deyimin sonuncunun türü string degile,ikti islevi cagrilmadan sonuc stringe cevrilir. Örnegin;

system.out.print.ln(3);

Komutu bir tamsayi olan 3 sayisini ilk önce bir dizgiye cevirir ve ekrana bu dizgi yazar.Ekranda 3 sayisini görürsünüz.Bazen bir cikti paremetresi asagidaki gibi olabilir.

System.out.println(„Bu sayi dörttür:“+4);

Bu komut 4 tamsayisini bir dizigiye cevirdikten sonra + birlestirme islemcisikullanarak,bu dizgiyi komuttaki dizgi ile birlestirir ve sunucu ekrana

Bu sayi dörttür:4 yazar.

Girdi islemleri(Output)

Klavyeden bilgi girmek için BufferReader sinifi kullanilir..

BufferReader girdi=new BufferReader( new InputStreamReader(System.in));

Bu sinifin readLine() metodunu kullanarak bilgiyi aliyoruz :

try {

String giris=girdi.readLine(); }

catch (IOException e ) { System.out.println(e); }

try-catch blogu olasi bir hatayi yakalamak için kullaniliyor.

(21)

BY Ahmet Tolga Tat Sayfa 21

Java programlama dilinde girdi islemleri biraz karisik bir konudur.Java’da klavyeden basit bir sekilde girdi alacak islevler yoktur.

Asagidaki iki örnekte verilmis topla ve text programlari derlenip topla.class calistirildiginda islemi yapabilirsiniz. Örnek: import java.io.* ; import Text; class topla {

public static void main (String args[]) throws IOException {

int sayi1,sayi2; int toplam=0; //

Text m=new Text();

System.out.println("Bir tamsayi giriniz: "); sayi1=m.readInt();

System.out.println("Bir tamsayi daha giriniz"); sayi2=m.readInt(); toplam=sayi1+sayi2; System.out.println("Toplam "+toplam); } } import java.io.*; class Text {

static boolean iseof = false; static char c;

static int i; static double d; static String s;

static BufferedReader input = new BufferedReader (

new InputStreamReader(System.in));

public int readInt () { if (iseof) return 0; System.out.flush(); try { s = input.readLine(); } catch (IOException e) { System.exit(-1); } if (s==null) { iseof=true; return 0; }

www.javadili.com

(22)

BY Ahmet Tolga Tat Sayfa 22

i = new Integer(s.trim()).intValue(); return i;

} }

Java’nin temel yapisi

Java’nýn genel yapýsýnýn ilk etapta C veya C++’a çok benzediði fark edeceksiniz, ama zaten herhangi bir dilde programlama tecrübesi olanlara tüm yapýlar tanýdýk gelecektir. Genel olarak dikkat edilmesi gereken hususlardan en önemlisi Java büyük küçük harfe duyarlý bir dil olduðudur.

Yorumlar

Üç deðiþik þekilde yorumlar koyabiliriz. // tek satýrda yorum

/* tek veya daha fazla satýrda yorum*/ /** dokümantasyon yorumu */

Dokümantasyon yorumlarý bir deðiþken veya fonksiyon tanýmýndan hemen önce yerleºtirilmelidir; çünkü Javadoc yani otomatik doküman yaratýcý bu cümleleri hemen altta tanýmlanan unsurun tanýmý olarak alacaktýr.

Komutlar

Bunlar Java programýndaki en küçük çalýþtýrýlan komut parçalarýdýr, he rþey olabilirler ve noktalý virgülle ( ; ) biterler.

Int x; X= 5*100;

Ýfadeler

Ýfadelerden kasýt tüm deðiþkenlere, sýnýflara, fonksiyonlara ve nesnelere verilen isimlerdir. Java dilinde bir ifade bir harfle, alt tireyle ( _ ) veya dolarla ( $ ) baºlayabilir. Devam eden karakterler rakam olabilir. Deðiþkenler tüm dilde de olduðu gibi büyük küçük harfe duyarlýdýrlar ve maksimum bir uzunluklarý yoktur.

Geçerli ifadeler • araba12 • yas-toplamý • Yas-Toplamý • _toplam • $maaº

www.javadili.com

(23)

BY Ahmet Tolga Tat Sayfa 23

Ve tabii ki Java diline ayrýlmýþ kelimeler ifade görevi alamazlar mesela bir deðiþken adý olamazlar. Bunlarýn listesi aþaðýdadýr.

{PRIVATE}abstr act

default if package this

Boolean do implements private throw

Break double import protected throws

byte else instanceof public transient

case extends int return True

catch false interface short Try

char final long static Void

class finally native super While

const float new switch

continue for null synchronized

(24)

BY Ahmet Tolga Tat Sayfa 24

Degiskenler ve Türler

Javada temel beþ tip deðiþken vardýr. Ayrýca deðiþkenler bir class veya dizide olabilirler. § Tamsayilar:byte,short,int ve long tam degerli sayilrdir.

§ Virgüllü sayilar:float ve double virgüllü sayilardir.

§ Karekterler:char sembolleri harfleri karakterlerle gösterir.

§ Boolean degerler: boolean mantiksal degerleri gösteren özel türler.

Tamsayilar

Tam sayý deðiþkenlerdir ve kendi içinde dört gruba ayrýlýr.

byte

8 bitlik yer kaplar.-128 den 127 araliginda deger alabilir.

short

16 bitlik yer kaplar.-32768 ve 32767 araliginda deger alabilir.

int

32 bitlik yer kaplar. –2.147.483.648 ve 2,147,483,647 araliginda deger alabilir.

long

64 bitlik yer kaplar.cok büyük bir aragliga sahiptir.

{PRIVATE}Tip Bit

Büyüklüðü

Deðerler

boolean 1 true veya false

char 16 ‘\u0000’ dan ‘\uFFFF’

byte 8 -128 dan +127 short 16 -32,768 dan +32,767 int 32 -2,147,483,648 dan +2,147,483,647 long 64 -9,223,372,036,854,775,8 08 dan +9,223,372,036,854,775 ,807

float 32 -3,40292347E+38 dan

+3,40292347E+38

(25)

BY Ahmet Tolga Tat Sayfa 25

Örnek: class ornek7 {

public static void main(String args[]) {

byte a=10*2; short b=50*20; int c=50000; long d=100*100;

System.out.println("byte'in degeri="+ a);

System.out.println("short'un(don’un) degeri="+ b); System.out.println("int'in degeri="+ c); System.out.println("long'un degeri="+ d); } }

Karakterler(Characters)

„char“ kelimesini bir karakter tanýmlamak için kullanýrýz. Karakter tek týrnak içine alýnmalýdýr. Bir char‘in araligi 0 ile 65536 arasindadir.Char türü isaretsiz 16 bitten olusur.Iki karekteri birlikte toplayabilirsiniz veya degiskenin degerini artirabilirsiniz.

char a; char a1=‘a‘; char a2=‘\n‘;

class ornek4 {

public static void main(String args[]) {

char c='a';

System.out.println("char c="+ c); }

}

Virgüllü sayilar(floating points)

float

32 bitlik yer kaplar.Tam sonuc istendiginde kullanilir.

Double

(26)

BY Ahmet Tolga Tat Sayfa 26

class ornek8 {

public static void main(String args[]) { float f=3.1444444f; double b=3.488888888888888; System.out.println("float'in degeri="+ f); System.out.println("double'in degeri="+b); } }

Mantiksal degerler(booleans)

Boolean kosullu isletmenler (if,else,while ve do)tarafindan gereksinim duyulurlar.Mantýksal ifadeler iki tip deðer alabilir.

true veya false Örnek: boolean a=true; Örnek: class ornek5 {

public static void main(String args[]) {

boolean a=true;

System.out.println("boolean a="+ a); }

}

Strings islemleri

Karakter dizilerini String kelimesi ile tanýmlarýz.

„Ben bir stringim“ Stringdir.“Re Re Re Ra Ra Ra Galatasaray Galatasaray Cim Bom Bom „ bir Stringdir.“Fenerbahze Köyhizmetleri Fitbol idman culübü“ bir Stringdir.String agzindan cikan kelimelerdir.

Java Stringleri String sinifindan turetilmis objeler olarak implemente eder.Stringlerin nesne olarak yapisinda tutulup islenmesi Java‘ya ustun özellikler saglar.Örnegin iki String’in

www.javadili.com

(27)

BY Ahmet Tolga Tat Sayfa 27

karsilastirilmasi,String icersinden bir supstring’in cikarilmasi,büyük kücük harf cevrimi,iki sitringin birlestirilmesi gibi islemler kolayca gerceklestirilir.

„Ben bir stringim“ Stringdir.“Re Re Re Ra Ra Ra Galatasaray Galatasaray Cim Bom Bom „ bir Stringdir.“Fenerbahze Köyhizmetleri Fitbol idman culübü“ bir Stringdir.String agzindan cikan kelimelerdir.

String Fonksiyonlari:

Strings=new String()

Bu ifade icinde karakter olmayan bir „s“ String#i olusturur.

String(char chars[])Bir Array’i karaketer elemanlarini baslangic deger olarak alan bir String olusturabiliriz.

Stiring Uzunlugu: Int Length()

Örnek:

class deneme {

public static void main(String args[]) {

char uzun[]={'a','b','c'}; String s=new String(uzun); System.out.println(s.length( )); }

} String Literalleri

Asagidaki s1 ve s2 esit Stringlerdir. class deneme1 {

public static void main(String args[]) {

char uzun[]={'a','b','c'}; String s1=new String(uzun); String s2="klm"; System.out.println("klm".length()); } } Stringleri Birlestirme: class gleich {

public static void main(String args[]) {

String slte="20";

String a="Ich bin " + 20 + " Jahre alt"; System.out.println(a);

(28)

BY Ahmet Tolga Tat Sayfa 28

}

class solang {

public static void main(String args[]) {

String solang="Heyy baby "+"when I see you"+"my heart is jumping"+"uuuOOo Yeeeehhhh" +"this is a story " + "about me "+"hheheheh";

System.out.println(solang); }

}

Stringlerin diger tipler ile birlestirilmesi

String s = "dort:" + 2 +2;

System.out.println(s); // " dort: 22 " String s = "dort:" +( 2 +2 );

System.out.println(s); // " dort: 4 "

Karakter Cikaran Fonksiyonlar

CharAt( ) Char charAt( int where )

String icinde konumu belirtilen karakteri cikarir Char ch ;

Ch = "abc".charAt( 1 ); // "b" degerini ch degiskenine atar.

Getchars( ) Void getchars( int source start, int source end, char target[ ], int target start ) Stringten verilen iki konum degeri arasinda bulunan substringi cikartir.

Örnek:

Class getcharornek { public static void main( ) {

String s = "Bu gettchar fonksiyonuna ait bir ornektir."; int start=14;

int end=27;

Char buf[ ] = new char[end - start ]; s.getchars(start, end, buf, 0 ); System.out.println(buf);

(29)

BY Ahmet Tolga Tat Sayfa 29

Stringlerin arastirilmasi

Indexof( ) karakter veya substring'in string icinde gecen ilk konumunu verir.

Lastindexof( ) karakter veya substring'in string icinde gecen son konumunu verir. Arastirilmaya nereden hangi konumdan baslanacagi bilgisi su form ile verilebilir.

Int indexof( string s, int baslangic_indeksi )

Int lastindexof( string s, int baslangic_indeksi ) Örnek:

class indexbak{

public static void main( ) {

String s = "Korkma! Sonmez bu safaklarda yuzen al sancak " + "Sonmeden yurdumun ustunde tuten en son ocak.";

System.out.println(s);

System.out.println( "indexof(S) = " + s.indexof('S') );

System.out.println( "lastindexof(S) = " + s.lastindexof('S') ); System.out.println( "indexof(ak) = " + s.indexof("ak") ); System.out.println( "lastindexof(ak) = " + s.lastindexof("ak") ); System.out.println( "indexof(s,10) = " + s.indexof('s',10) );

System.out.println( "lastindexof(s,60) = " + s.lastindexof('s',60) ); System.out.println( "indexof(ak,10) = " + s.indexof("ak",10) ); System.out.println( "lastindexof(ak,60) = " + s.lastindexof("ak",60) ); }

}

String Manipulasyonu

Concat( ) String concat( string s ) Iki stringi birlestirir.

String s1 = "bir";

String s2 = s1.concat( "iki" ); // "biriki" stringini s2 degiskenine atar. Replase( ) string replase( char original, char replacement )

(30)

BY Ahmet Tolga Tat Sayfa 30

String s = "bakla".replace( 'b' , ' t ' ); // "takla"stringini s' e atar.

valueof( ) fonksiyonu ile veri tipinin degistirilmesi

valueof( ) metodu veriyi kendi formundan okunabilir bir forma donusturur.

Static string valueof( double num )

Static string valueof( long num )

Static string valueof( object ob )

Static string valueof( char char[ ] )

String icindeki karakterlerin büyük / kücük harf cevrimi

String toLowerCase( ) string icindeki buyuk hafleri kucuk harfe cevirir.

String toLowerCase( ) string icindeki kucuk hafleri buyuk harfe cevirir.

Örnek:

class degis {

public static void main(){ String s="Test edelim!";

System.out.println("bak:"+s); String upper=s.toUpperCase(); String upper=s.LowerCase(); System.out.println("UpperCase:"+upper); System.out.println("LowerCase:"+lower); } }

StringBuffer Nesnesi

StringBuffer stringlere daha fonksiyonel islevler kazandiran string sinifidir. StringBuffer genisleyebilir ve yazilabilir karakter dizileri olusturabilmeyi saglar.

StringBuffer Yapici Fonksiyonlari StringBuffer( )

StringBuffer(int size ) StringBuffer(string s )

Örnek:

class sitbuf{

public static void main( ) {

(31)

BY Ahmet Tolga Tat Sayfa 31

System.out.println(" Buffer = " + sb );

System.out.println(" Length = " + sb.length( ) ); System.out.println(" capacity " + sb.capacity( ) ); }}

EnsureCapacity ( )

StringBuffer constructer ile olusturulduktan sonra sting icin yer allocate etmek icin kullanilir.

Void ensureCapacity(int capacity) //capacity buffer'in genisligini ifade eder. Setlength( )

StringBuffer icindeki stringin uzunlugunu belirler.

Void setlength(int len) //len buffer'in uzunlugunu ifade eder. GetChars( )

StringBuffer icinden bir substring cekerek array'e aktarir.

Void GetChar(int sourceStart,int sourceEnd, char target[ ], int targetStart) Append( )

StringBuffer Append(string s)

StringBuffer Append(int num)

StringBuffer Append(Object obj)

Append( ) metodu diger tipteki datalar ile StringBuffer' daki stringin birlestirilmesini saglar. Insert( )

StringBuffer insert(int index, string s)

StringBuffer insert(int index, char ch)

StringBuffer insert(int index, object obj) Bir stringin digeri icine insert edilmesini saglar. Reverse( )

Reverse metodu kullanilarak StringBuffer icindeki stringin sahip oldugu karakterlerin sirasi ters cevrilebilir.

StringBuffer reverse( )

Deðiþ kenlerin Ýlk Deðerleri

Java da hiçbir deðiþken veya nesne referansý deðersiz baþlamaz. Hepsi tanýmladýklarý anda aþaðýdaki deðerleri alýrlar.

byte 0 short 0

(32)

BY Ahmet Tolga Tat Sayfa 32 long 0l float 0.0f double 0.0d char ‘\u0000’ boolean false Tüm Referanslar null

Tanýmlama ve Deðer atama

int x,y; // tam sayý tanýmlama

float z=5.12; // float tanýmlama ve deðer atama

boolean tamam =true; // boolean tanýmlama ve deðer atama char c; // karakter tanýmlama

String str1; // string tanýmlama

String str2= „Lay Lay“; // string tanýmlama ve deðer atama c=’b’; // char deðiþkenine deðer atma

str1=“Uzaylýyýz“; // String deðer atama x=6; // int deðiþkenine deðer atama y=2000; // int deðiþkenine deðer atama

Diziler(Arrays)

Benzer tür degiskenlerin olusturdugu bir grublara dizi denir:Dizilerin Java da önemli bir yeri vardir

Her tipin dizisi tanýmlanabilir. char s[ ];

int x[ ];

int tablo [ ] [ ]; Dizi Yapma

Java’da tüm diziler esasýnda birer nesnedir. Bu yüzden tanýmlandýktan sonra uzunluklarý verilerek yaratýlmalýdýr. (New yani nesne yapma komutu kullanýlarak)

int tablo [ ] [ ]= new int [4] [5]; veya int tablo [ ] [ ];

tablo=new int[4] [5];

Aþaðýdakiler dizi yapma hatalarýdýr. Derleme sýrasýnda derleyici hata verecektir. Hata 1

int liste [40]; // taným sýrasýnda statik bir // dizi yaratmayýnýz.

Hata 2

int liste [ ] ; // büyüklüðü belirtmeden

(33)

BY Ahmet Tolga Tat Sayfa 33

Not:Dizilerin uzunluklarýný length metoduyla alabilirsiniz. int a [ ] [ ] = new int [8] [2];

a.length // deðeri 8 dur a [0].length // deðeri 2 tür.

Bazen taným sýrasýnda deðer vererek de dizi uzunluðu tespit edebiliriz. String meyveler [ ]= {„çilek“,“kivi“,“kiraz“};

Esasýnda aþaðýdakinin aynýsýdýr.

String meyveler [ ];

Meyveler = new string [3]; Meyveler [0]=“çilek“; Meyveler [1]=“kivi“; Meyve ler [2]=“kiraz“;

(34)

BY Ahmet Tolga Tat Sayfa 34

Java’da operatörler

Java da 5 Temel operatörler (islemciler) vardýr.

Java Operasyonu Aritmetik Operatörü Matematiksel Ýfadesi Java Ýfadesi Toplama + f+7 f + 7 Çýkarma - p-c p – c Çarpma * bm b * m Bölme / x/y x / y Mod Alma % r mod s r % s

Artýrma ve Eksiltme

Operatör Tanýmý Örnek Ýfade Tanýmý

++ Önce Arttýr ++a a yý 1 arttýrýp iþlemde öyle kullan ++ Sonra Arttýr a++ a yý iþlemde kullan sonra 1 arttýr -- Önce Azalt --b b yý 1 azaltýp iþlemde öyle kullan -- Sonra Azalt b-- b yý iþlemde kullan sonra 1 azalt

Karþýlaþ týrmalar

Standart Matematiksel Eþitlik ve Kýyaslama Operatörleri Java Eºitlik ve Kýyaslama Operatörleri

Örnek Java Durumu Java Durumunun Açýklamasý Eºitlik Operatörleri = == x == y x eºittir y != x != y x eþit deðildir y Kýyaslama Operatörleri > > x > y x büyüktür y < < x < y x küçüktür y >= x >= y x büyük eºittir y <= x <= y x küçük eºittir y

www.javadili.com

(35)

BY Ahmet Tolga Tat Sayfa 35

Deðer Atamalar

Atama Operatörleri Örnek Ýfade Tanýmý Sonuç int c = 3, d = 5, e = 4, f = 6, g = 12; += c += 7 c = c + 7 10 to c -= d -= 4 d = d – 4 1 to d *= e *= 5 e = e * 5 20 to e /= f /= 3 f = f / 3 2 to f %= g %= 9 g = g % 9 3 to g Mantýksal

And (Ve) Or (Veya) Not (Deðil) && || !

Operatör öncelik tablosu

{PRIVATE}Operatörler Öncelik Tip ( ) left to right parantez ++ -- + - ( type ) right to left Bir iºlem * / % left to right Çarpan + - left to right Toplam < <= > >= left to right Karþýlaþtýrma == != left to right Eºitlik ?: right to left Durumsal = += -= /= %= right to left Atama Stringler + ile birleºir.

System.out.println („Doktor “+isim)

Ekranca „Doktor „ ve hemen yanýna ismin içeriðini basar.

Özel Karakterler

{PRIVATE}Öz el Karakterler

Tanýmlarý

\n Yeni Satýr Bir sonraki satýrýn baþýna geç

(36)

BY Ahmet Tolga Tat Sayfa 36

\r Bulunduðun satýrýn baþýna geç \ \ Backslash basmak için kullanýlýr \ ‘ Tek týrnak basmak için kullanýlýr \ „ Çift týrnak basmak için kullanýlýr

Bit Ýþlemleri

{PRIVA TE}NO T

AND OR XOR Sola Kaydýr Saða Kaydýr Sýfýrla Saða Kaydýr

~ & | ^ << >> >>>

(37)

BY Ahmet Tolga Tat Sayfa 37

Java’da kontrol

yapilari

Hayatta karþýlaþtýðýmýz tüm problemlerin çözümünde de olduðu gibi, bilgisayar programýný yazacaðýmýz bir problemini de önce en iyi þekilde idrak edip, sonra iyi tasarlanmýþ bir çözüm oluþturulmalýyýz. Tüm bilgisayar programla ma dillerinde olduðu gibi, iyi tasarlanmýþ bir çözüme ulaþmak için, önce o bilgisayar programýndaki kontrol yapýlarý en iyi þekilde çalýþýlýp,

anlaþýlmalýdýr.

Bu bölümde kontrol yapýsý mantýðý ve Java programlama dilinde bulunan kontrol yapýlarýna çalýþacaðýz.

If,else kaliplari

if (boolean) { Komutlar; } else { Komutlar; } Örnek int sayý ;

sayý = sayýAl () ; // programdaki bir metot if (sayý < 0) {

System.out.println („Hata: sayý deðeri negatif!“): }

else {

System.out.println („blabla „ +sayý+„ bla„) ;

(38)

BY Ahmet Tolga Tat Sayfa 38

Örnek:

class eger {

public static void main(String args[]) { int x; x=20; if(x<15) { System.out.println("islem dogru"); } else { System.out.println("Hata:Girdiginiz sayi " +x); } } }

Koºul kalibi

Bazen çok kýsa koþullar için if else yerine kullanýlýr.

koþul ? doðruysa : yanlýþsa;

örnek: int cevap;

cevap=x < y ? x : y; Ayný iþlemin if else þekli: int cevap;

if x < y (eger x y‘den kücükse ) cevap=x; (cevap x olur ) else (yok hayir öyle degilse ) cevap=y; (cevap dogal olarak y olur )

Switch kalibi

Bir önceki bölümde if ve if/else tekli ve ikili seçim kontrol yapýlarýna çalýþmýþtýk. Bu yapýlar her programda çok kullanýldýðý gibi çoðu zamanda tek bir deðiþkenin alabileceði bir çok deðer için bir programýn yapmasý gereken farklý iþlemler olacaktýr. Eð er elimizde sadece if/else yapýsý bulunsaydý, bu birden çok fazla deðerin her birini kontrol etmek için bir if/else kontrolü yazmak zorunda kalacaktýk. Bu çok sayýda if/else, hem programýn okunurluðunu azaltacak hemde

www.javadili.com

(39)

BY Ahmet Tolga Tat Sayfa 39

programý izlemeyi zorlaþtýracaktýr. Ý þte bu olumsuzluklarý engelleyip daha verimli bir yapý oluþturabilmek için java proglama dilinde SWÝTCH çoklu seçim kontrol yapýsý bulunmaktadýr. Bu switch deyimi bir deðiþkenin alabileceði bir çok deðerin her biri için yapýlmasý gerekli kod blokla rýný içerir.

Switch yapýsý ilk olarak SWÝTCH deyimi ile baþlar, sonra deðerlerine göre iþlem yapýlacak deðiþkenin belirlenmesiyle devam eder. Deðiþkenin her deðeri için yazýlacak kod parçalarý CASE deyiminlerinden sonra yazýlýr ve Her CASE deyimin bittiði yeri gösteren BREAK deyimi ile case sonlandýrýlýp, SWITCH komut bloðundan çýkýlýr. Switch yapýsýnýn son elemaný ise seçimlik olarak DEFAULT deyimi olup eðer hiç bir CASE koþulu saðlanmazsa yapýlacak iºlemleri iç erir.

switch (expr1) { case expr2: Komutlar; break; case expr3: Komutlar; break; default: Komutlar; break; }

Örnek:

import java.awt.*; import java.applet.*;

public class caseornek01 extends Applet { Label prompt1;

TextField input1; int sayi=0;

public void init() {

prompt1 = new Label( "1 ÝLE 10 ARASI BÝR SAYI GÝRÝNÝZ " ); input1 = new TextField( 5 ); add( prompt1 );

add( input1 ); }

public void paint( Graphics g )

{ g.drawString("Sonuc",50,125); switch (sayi)

{ case 1:

g.drawString( " Girdiginiz sayi= "+sayi, 50, 150 );

(40)

BY Ahmet Tolga Tat Sayfa 40

case 2:

g.drawString( " Girdiginiz sayi= "+sayi, 50, 150 ); break;

case 3:

g.drawString( " Girdiginiz sayi= "+sayi, 50, 150 ); break;

case 4:

g.drawString( " Girdiginiz sayi= "+sayi, 50, 150 ); break;

case 5:

g.drawString( " Girdiginiz sayi= "+sayi, 50, 150 ); break;

case 6:

g.drawString( " Girdiginiz sayi= "+sayi, 50, 150 ); break;

case 7:

g.drawString( " Girdiginiz sayi= "+sayi, 50, 150 ); break;

case 8:

g.drawString( " Girdiginiz sayi= "+sayi, 50, 150 ); break;

case 9:

g.drawString( " Girdiginiz sayi= "+sayi, 50, 150 ); break;

case 10:

g.drawString( " Girdiginiz sayi= "+sayi, 50, 150 ); break;

default:

g.drawString("Farklý Bir Sayý Girdiniz",50,150); break;

}

}

public boolean action( Event event, Object o ) {

if ( event.target == input1 ) {

sayi = Integer.parseInt ( input1.getText() ); repaint();

}

return true; }

}

Bu örnekte dýþarýdan girilen sayýnýn 1 ile 10 arasýnda olanýni applet'e yazdýrýyoruz. Eðer farklý bir sayý girilirse sayý için Farklý Bir Sayý Girdiniz mesajý dýþarý verilir.

Bu algoritma gerçekleþtirilirken sayi isimli deðiþken kullaný lmýþ olup, bu sayi is imli deðiþkenin 10 deðeri CASE kullanýlarak kontrol edilmiþtir. Eðer bu 10 CASE durumundan hiç biri olmazsa DEFAULT deyiminin kullanýldýðý komut bloðu iþlenilmiþtir.

Þimdi bu örneði birde aþaðýdaki gibi yazalým.

import java.awt.*; import java.applet.*;

(41)

BY Ahmet Tolga Tat Sayfa 41

Label prompt1; TextField input1; int sayi=0; public void init() {

prompt1 = new Label( "1 ÝLE 10 ARASI BÝR SAYI GÝRÝNÝZ " );

input1 = new TextField( 5 );

add( prompt1 );

add( input1 ); }

public void paint( Graphics g ) {

g.drawString("SONUCUMUZ",50,125);

switch (sayi) {

case 1: case 2: case 3: case 4: // CASE DEYÝMLERÝ BREAK

case 5: case 6: case 7: case 8: // KULLANILMADAN OLUªTURULMUªTUR. case 9:

g.drawString( "GÝRDÝÐÝNÝZ SAYI = "+sayi, 50, 150 ); break;

case 10:

g.drawString( "GÝRDÝÐÝNÝZ SAYI = "+sayi, 50, 150 ); break;

default:

g.drawString("10'dan Büyük Bir Sayý Girdiniz",50,150); break;

}

}

public boolean action( Event event, Object o ) {

if ( event.target == input1 ) {

sayi = Integer.parseInt ( input1.getText() ); repaint(); } return true; } } Örnek

// farz edin sayým pozitif // deðeri olan bir rakam switch (sayým % 3) {

(42)

BY Ahmet Tolga Tat Sayfa 42

System.out.println („Renk kýrmýzý.“); renkAta (0);

break; case 1:

System.out.println („Renk sarý“); renkAta(1);

break; case 2:

System.out.println („Renk mavi“) ; renkAta (2) ;

break; }

// programýn renkAta( ) adlý bir fonksiyona sahip olduðunu kabul ediyoruz

Break ve Continue komutlarý

BREAK ve CONTINUE komutlarý ile bir döngünün akýþý deðiþtirilir. BREAK komutu while, for, do/while, veya switch döngü yapýlarýndan koþulsuz çýkýþý saðlar.BREAK komutunun asýl kullaným amacý bir döngüden döngünün sonunun gelmesini beklemeden çýkýþ için ve ya SWICTH çoklu seçim komut bloðunda BREAK komutunun altýnda kalan komutlarý atlamak için kullanýlýr.

Aþaðýdaki basit bir örnekle bunu gözlemleyelim.

//Örnek:

import java.awt.*; import java.applet.*;

public class breakornek0 extends Applet {

public void paint (Graphics g) {

int y=25;

for (int i=1;i<=20;i++) {

g.drawString("Döngü degiskenini ndegeri = "+i,15,y); y=y+25;

if (i==8) {

Gambar

Graphic Sýnýfýna Ait Metotlar drawLine (x1, y1, x2, y2) -

Referensi

Dokumen terkait

Dalam pelaksanaan program terutama dalam aspek ekonomi yaitu peminjaman dana secara bergulir, hendaknya benar-benar diperuntukkan bagi masyarakat yang benar- benar

Untuk keterampilan membaca Pondok Pesantren Darul Hikmah dan Pondok Pesantren Al Kamal menggunakan metode qiro’ah atau membaca teks Arab langsung untuk melatih

tinggi akan mampu melindungi produk yang dikemasnya dari gangguan mekanis dengan baik, sedangkan kekuatan tarik film dipengaruhi oleh formulasi bahan yang digunakan

Hasil praktik siswa dalam melakukan pekerjaan pemesinan akan dipengaruhi beberapa faktor, baik faktor kemampuan membaca gambar teknik maupun faktor penguasaan

Signifikasi penelitian secara praktis adalah dengan komunikasi yang baik yaitu komuniaksi eksternal yang terjadi di Pusat Informasi dan Komunikasi Pondok Pesantren La Tansa

Berdasar telah dipaparkan diatas, pengertian Masyarakat Ekonomi ASEAN, adalah sebuah masyarakat yang saling terintegrasi satu sama lain dalam lingkup ASEAN dimana adanya

dr. Bonar Marbun, SpPD, K-GH Pendarahan Saluran Cerna Bagian Atas Edema Paru:Gagal Jantung Akut, ALI, ARDS Intoksikasi dengan Ancaman Hidup Dr. Ari Fahrial Syam, SpPD, K-GEH dr.

Berdasarkan ketinggian dan lamanya genangan, lahan rawa lebak dapat dibagi dalam tiga tipologi, yaitu (1) Lebak dangkal, (2) Lebak tengahan, dan (3) Lebak dalam.