Veri Yapıları – 2009 Java Programlama Diline Giriş

advertisement
Veri Yapıları – 2009
Java Programlama Diline Giriş
Yrd. Doç. Dr. Aybars UĞUR
Bölüm 1
GİRİŞ
Java
• Java, ilk olarak Sun Microsystems tarafından
geliştirilen nesne yönelimli programlama dilidir.
• 1995 yılında piyasaya sürülmüştür.
Gosling, Haziran 1991’de “Oak”
geliştirmiştir.
James
adıyla
• Platform bağımsızlığı (programı bir kere yaz,
derle ve her platformda çalıştır), tasarım
amaçlarındandır. Birçok donanım, işletim sistemi
ve platformda çalışabilmektedir.
VERİ YAPILARI
01 Java Temel Kavramlar
3
Önemli Java Gerçekleştirimleri
Sürüm
Ad
Açıklama
JDK 1.1 (1995)
Java 1.0
İlk sürüm
J2SE 1.2(1998)
J2SE
Java 2
J2SE (Java 2 Platform, Standard Edition)
J2EE (Java 2 Platform, Enterprise Edition)
J2ME (Java 2 Platform, Micro Edition).
J2SE 5.0(2004)
J2SE
Tiger
Generic yapılar, Autoboxing/Unboxing
Gelişmiş for döngüsü, Varargs (Değişken
sayıda argüman)
J2SE 6 (2006 sonu) : Mustang
J2SE 7 (Ağustos 2006-2010) : Dolphin
Son gelişmeler için : http://en.wikipedia.org/wiki/Java_version_history
VERİ YAPILARI
01 Java Temel Kavramlar
4
JVM ve Bytecode
• JVM (Java Virtual Machine) veya Java Sanal
Makinesi: Java’nın özgün sanal makine modelini
gerçekleştiren
bilgisayar
programları
ve
yapılarından oluşan bir bütündür.
• “Java Bytecode” adı verilen, bilgisayar ara dilini
kabul eder. Bir programın bytecode’u, Java dili
derleyicileri tarafından üretilir.
VERİ YAPILARI
01 Java Temel Kavramlar
5
İlk Java Programı
Prog1 adlı java programı :
class Prog1
{
public static void main(String args[])
{
System.out.println("Merhaba");
}
}
ekrana merhaba yazdırmaktadır.
VERİ YAPILARI
01 Java Temel Kavramlar
6
Java Uygulaması
Java programlarında
// Satırın geri kalan kısmının açıklama satırı olduğunu gösterir.
Geleneksel /* Açıklama */ işaretleri de özellikle çok satıra
yayılan açıklamalarda kullanılır.
Deyimler “;” ile sonlandırılmalıdır.
Her java programı en az bir sınıf tanımı içermelidir.
VERİ YAPILARI
01 Java Temel Kavramlar
7
Java Programının Çalıştırılması
JVM’i (Java Virtual Machine) açmak üzere Java komutu
kullanıldığında işletilen bilgisayar programına Java
uygulaması (application) denilir.
DERLEME
Kaynak Kod
Byte Kod
javac derleyicisi
Prog1.class
Prog1.java
class Prog1
{
public static void main(String args[]) {
System.out.println("Merhaba");
}
}
Byte Kod
Prog1.class
.. .. .. ..
> javac Prog1.java
.. 80 1a ..
.. .. .. ..
JVM tarafından
yorumlanabilir.
ÇALIŞTIRMA
java yorumlayıcısı
.. .. .. ..
.. 80 1a ..
.. .. .. ..
> Merhaba
> java Prog1
VERİ YAPILARI
01 Java Temel Kavramlar
8
Entegre Geliştirme Ortamları
• Programların
IDE
(Integrated
Development
Environment) kullanılarak yazılması, işletilmesi, test
edilmesi ve hatalardan arındırılması kolay olduğu
için, bu şekilde uygulama yazılması işlemine RAD
(Rapid Application Development) adı verilmektedir.
•
•
•
•
•
Eclipse (http://www.eclipse.org/)
NetBeans (http://www.netbeans.org/products/platform/)
JDeveloper (from Oracle)
IntelliJ (JetBrains)
JCreator (http://www.jcreator.com/) …
VERİ YAPILARI
01 Java Temel Kavramlar
9
Bölüm 2
JAVA’da
VERİ TİPLERİ
Veri Tipleri
• Java’da iki tür veri tipi vardır:
– Temel
– Referans
• İki tür veri tipi arasındaki fark atama işlemi sırasında
ortaya çıkar.
• Temel tipteki bir değişkenin diğer bir değişkene ataması
sırasında veri kopyalanır.
• Referans değişkeninin diğer bir değişkene ataması
sırasında ise, her iki değişken de aynı veriyi gösterir.
Referanslar, C/C++ işaretçilerine (pointer) benzerler.
• Diziler ve Nesnelerin tümü referans veri tipindedir.
VERİ YAPILARI
01 Java Temel Kavramlar
11
Java’da Temel Veri Tipleri
Type
Size in bits
Values
boolean
1
true or false
byte
8
-128 to +127
char
16
Unicode
short
16
integer
int
32
integer
long
64
integer
float
32
float
double
64
double
VERİ YAPILARI
01 Java Temel Kavramlar
12
Temel Veri Tiplerinin Sınırları
• Tamsayıların Sınırları
• Ondalıklı Sayıların Sınırları
VERİ YAPILARI
01 Java Temel Kavramlar
13
Java’nın 8 Temel Veri Tipi
Type
Size in bits
Values
Standard
boolean
char
byte
short
int
8
16
8
16
32
true or false
’\u0000’ to ’\uFFFF’
–128 to +127
–32,768 to +32,767
–2,147,483,648 to +2,147,483,647
long
64
float
32
double
64
–9,223,372,036,854,775,808 to
+9,223,372,036,854,775,807
–3.40292347E+38 to
+3.40292347E+38
–1.79769313486231570E+308 to
+1.79769313486231570E+308
(ISO Unicode character set)
(IEEE 754 floating point)
(IEEE 754 floating point)
Sarmalayıcı (Wrapper) Sınıflar
•
•
•
•
java.lang.Byte
java.lang.Short
java.lang.Integer
java.lang.Long
• java.lang.Float
• java.lang.Double
• java.lang.Character
• java.lang.Boolean
VERİ YAPILARI
01 Java Temel Kavramlar
14
ASCII ve UNICODE
Karakter Setleri
• ASCII, 8 bit kodlama düzenindedir ve en yaygın
karakter setidir. 256 karakterle sınırlıdır.
• Unicode, 16 bitlik kodlama düzenindedir ve
65536 karakterlik sahası vardır.
• Java programlama dili Unicode’u kullanır.
VERİ YAPILARI
01 Java Temel Kavramlar
15
İkiye Tümleyen
(Two’s Complement)
İkiye tümleyen, negatif sayıları İkili sayılar içerisinde
göstermek için kullanılan bir yöntemdir. İlave bir + ve −
sembolüne ihtiyaç duyulmaz. İkili (binary) bir sayının ikiye
tümleyeni (two’s complement), sayının ikinin üssünden
çıkartılması ile elde edilir (n bitlik ikinin tümleyeni için,
2N’den çıkarılır).
Negatif sayıların ikili kodlanması esnasında ikiye tümleme
metodu kullanılmadığı taktirde, sayının işareti için ayrı bir
bit harcanması gerekir. Birbirinden farklı işarete sahip
birden fazla 0 sayısının oluşmasına sebep olur. Bitlerin
değerlerini ve anlamlarını değerlendirecek bir yönetimdenetim mekanizması kullanılması gerekir.
VERİ YAPILARI
01 Java Temel Kavramlar
16
8 Bitlik İkinin Tümleyeni Tamsayılar
A two's-complement system or
two's-complement arithmetic is
a system in which negative
numbers are represented by the
two's complement of the absolute
value.
Pozitif Sayılar doğal şekildedir:
this system is the most common
method of representing signed
integers on computers. In such a
system, a number is negated
(converted from positive to
negative or vice versa) by
computing its two's complement.
Sınırları : [-2N-1 … 2N-1-1]
VERİ YAPILARI
01 Java Temel Kavramlar
17
Java Byte Data Type
Decimal
8 bit Binary
Invert
0
0000 0000
-
-
+1
0000 0001
1111 1110
1111 1111
-1
+2
0000 0010
1111 1101
1111 1110
-2
+3
0000 0011
1111 1100
1111 1101
-3
+4
0000 0100
1111 1011
1111 1100
-4
+5
0000 0101
1111 1010
1111 1011
-5
add 1 for
Twos
Complement
¯
Decimal
-
¯
124
0111 1100
1000 0011
1000 0100
-124
125
0111 1101
1000 0010
1000 0011
-125
126
0111 1110
1000 0001
1000 0010
-126
127
0111 1111
1000 0000
1000 0001
-127
-
-
1000 0000
-128
-
VERİ YAPILARI
01 Java Temel Kavramlar
18
IEEE 754 Standard for Floating-Point Arithmetic
• http://tr.wikipedia.org/wiki/IEEE_754
• http://en.wikipedia.org/wiki/IEEE_754-1985
• IEEE Kayan Nokta Aritmetiği Standardı, kayan noktalı
sayıların gösteriminde en çok kullanılan standarttır.
• IEEE 754 standardına göre sayılar tek duyarlı (32 bit) ve
çift duyarlı(64 bit) şekilde gösterilebilirler.
VERİ YAPILARI
01 Java Temel Kavramlar
19
IEEE 754 : Tek Duyarlı Gösterim
Tek duyarlı gösterimde sayı 32 bitle ifade edilir. Bu
bitlerden biri işaret, 8'i üs 23 tanesi ise anlamlı kısmın
gösterimi için kullanılır. Tek duyarlı gösterimde üs için
kaydırma değeri 28-1-1 = 127 olarak hesaplanır.
1 bit
İşaret
sign
8 bit
Üs
exponent
23 bit
Anlamlı Kısım
fraction
VERİ YAPILARI
01 Java Temel Kavramlar
20
IEEE 754 : Tek Duyarlı Gösterim
Tek duyarlı gösterimde 6,375 sayısını temsil etmek istersek :
6 → (110)2
0,375 × 2 = 0,75
0,75 × 2
= 1,5
0,5 × 2
= 1,0
0,375 = (0,011)2 → 6,375 = (110,011)2
Sayıyı olağan duruma getirirsek
Sayı > 0 olduğundan işaret biti
Sayının üst değerinin saptırılmış hali
Anlamlı kısım
Sayı son olarak
şeklinde ifade edilir.
: 110,011 = 1,10011x22
:0
: 2+127 = 129 → 12910 = 100000012
: 10011000000000000000000
: 0 10000001 10011000000000000000000
VERİ YAPILARI
01 Java Temel Kavramlar
21
IEEE Tek Duyarlı Gösterimdeki Bir Sayının
Onluk Düzendeki Değerinin Bulunması
v = s × 2e × m
where
– s = +1 (positive numbers and +0) when the sign bit is 0
– s = −1 (negative numbers and −0) when the sign bit is 1
– e = exponent − 127 (in other words the exponent is stored with
127 added to it, also called "biased with 127")
– m = 1.fraction in binary (that is, the significand is the binary
number 1 followed by the radix point followed by the binary bits
of the fraction). Therefore, 1 ≤ m < 2. (1+fraction)
0 10000001 10011000000000000000000
v = +1 * 22 * (1,10011)2 = 6,375
1+ 0,5+
0,0625+ 0,03125 = 1,59375
VERİ YAPILARI
01 Java Temel Kavramlar
22
IEEE 754 : Çift Duyarlı Gösterim
Çift duyarlı gösterimde sayı 64 bitle ifade edilir. Bu
bitlerden biri işaret, 11'i üs ve 52 tanesi de anlamlı
kısmı ifade etmek için kullanılır. Bu gösterimde üs
için sapma değeri 211-1-1 = 1023 olarak hesaplanır.
1 bit
İşaret
sign
11 bit
Üs
exponent
52 bit
Anlamlı Kısım
fraction
VERİ YAPILARI
01 Java Temel Kavramlar
23
Değişkenler - I
Tip değişken ismi
int sayi1; // int veri tipidir.
/* sayi1 değişkeninin tamsayı tipinde olduğunu
belirtir */
........
sayi1=5;
float sayi=5.7f;
VERİ YAPILARI
01 Java Temel Kavramlar
24
Değişkenler - II
• Değişkenler,
tanımlandıkları
gibi
değer
alırlar:
int a = -5; double b = 10.3;
• Aynı satırda birden çok değişken tanımı yapılabilir.
• C++ programlama Dilinde olduğu gibi değişkenler,
herhangi bir yerde tanımlanabilir. Metodun en üstünde
tanımlanma zorunluluğu yoktur.
• Değişkenlerin, gerekli olduğu yerde tanımlanması
uygundur.
• Java Dilinde değişkenlerin kullanılmadan önce değerleri
olması gerekir.
• Değişkenler
sadece
tanımlandıkları
blokta
kullanılabilirler.
VERİ YAPILARI
01 Java Temel Kavramlar
25
Veri Tipi Dönüştürme (Casting)
• Daha geniş bir tipi, daha dar bir veri tipine
dönüştürürken “casting” yapmak gerekir.
double sayi1=5;
// float sayi2 = sayi1; // Yanlış
float sayi2 = (float)sayi1; // Doğru
double sayi3 = sayi2; /* Geniş tip olduğundan
problem yok */
VERİ YAPILARI
01 Java Temel Kavramlar
26
Yazdırma Komutu
•
System.out.print ve System.out.println
System.out.print(“Merhaba”); System.out.println(“Java Dili”);
Merhaba Java Dili
System.out.println(“\nOrtalama="+57);
System.out.println(5);
int sayi = 5;
System.out.println("Sayi\tKaresi");
System.out.println(sayi+"\t"+(sayi*sayi));
• Sayi
Karesi
• 5
25
•
System.out.printf (J2SE 5.0’ın yeni özelliklerindendir)
String str = "Java"; double versiyon = 5.0;
System.out.printf("Merhaba %s %f ", str, versiyon);
VERİ YAPILARI
01 Java Temel Kavramlar
27
Java’da Klavyeden Okuma
import java.util.Scanner;
class Dene
{
public static void main(String args[])
{
Scanner str = new Scanner(System.in);
int i = str.nextInt();
System.out.println(""+(i*i));
}
}
Ayrıntılar için :
http://java.sun.com/j2se/1.5.0/docs/api/java/util/Scanner.html
VERİ YAPILARI
01 Java Temel Kavramlar
28
OPERATÖRLER - I
Hesaplamalarda kullanılan operatörler :
Aritmetik : +, -, *, /, % (Mod, kalan), ++, -Mantıksal : &&, ||, !, &, |, .....
İlişkisel :
== (eşittir)
!= (eşit değildir)
>, <, >=, <=
VERİ YAPILARI
01 Java Temel Kavramlar
29
OPERATÖRLER - II
Atama Operatörü : değişken = deyim;
int x = 5;
double sayi = -3.5;
int a, b, c;
a=b=c=100; // Atama zinciri
Bileşik Atamalar : +=, -=, *=, /=, .....
x-=10; // x = x - 10 ile eşdeğer
VERİ YAPILARI
01 Java Temel Kavramlar
30
Operatörler ve Öncelik Sırası
Gruplama
Postfix
Unary
Creation, cast
Multiplicative
Additive
Shift
Relational
Equality
Bitwise AND
Bitwise EXOR
Bitwise OR
Logical AND
Logical OR
Conditional
Assignment
Operatorler
[] . (params) exp++ exp-++exp --exp +exp -exp ~ !
new (type)exp
* / %
+ << >> >>>
< > <= >= instanceof
== !=
&
^
|
&&
||
?:
= *= /= %= += -= >>= <<= >>>=
&= ^= |=
VERİ YAPILARI
01 Java Temel Kavramlar
31
Bölüm 3
YAPISAL PROGRAMLAMA
ve DENETİM YAPILARI
YAPISAL PROGRAMLAMA
Yapısal Programlamada üç tür denetim yeterlidir:
• Sıra (Sequence)
• Seçim (Selection)
• Tekrar (Repetition)
Sıralı işletim ?
VERİ YAPILARI
01 Java Temel Kavramlar
33
PROGRAM DENETİM YAPILARI
• SEÇİM YAPILARI
– if
– if/else
– switch
• TEKRAR YAPILARI (Döngüler)
– while
– do/while
– for
VERİ YAPILARI
01 Java Temel Kavramlar
34
SEÇİM YAPILARI : IF
if (koşul) ifade
if(notu>=60) System.out.println("Geçti");
Koşul : boolean veri tipindedir. true veya false olabilir.
int notu=65, sayac=0;
if(notu>=60) // İfade bloğu
{ System.out.println("Gecti"); sayac++; };
VERİ YAPILARI
01 Java Temel Kavramlar
35
SEÇİM YAPILARI : IF/ELSE
if (koşul) ifade;
else ifade;
if(notu>=60)
System.out.println("Gecti");
else
System.out.println("Kaldı");
VERİ YAPILARI
01 Java Temel Kavramlar
36
CONDITIONAL OPERATOR (?:)
System.out.println(notu>=60? "Geçti":"Kaldı");
Eşdeğer ifade :
if (notu>=60)
System.out.println("Geçti");
else
System.out.println("Kaldı");
VERİ YAPILARI
01 Java Temel Kavramlar
37
IF-ELSE-IF MERDİVENİ
(CASCADING IF)
if(koşul) ifade
else if (koşul) ifade
else if (koşul) ifade
...............
else ifade;
if (notu>=90)
str = “A”;
else if (notu>=80)
str = “B”;
else if (notu>=70)
str = “C”;
else if (notu>=60)
str = “D”;
else str = “E”;
System.out.println(str);
VERİ YAPILARI
01 Java Temel Kavramlar
38
SEÇİM YAPILARI : SWITCH
Çoklu Seçim
switch (deyim) {
case sabit1:
ifade1;
break;
case sabit2:
ifade2; break;
....
default :
ifade;
break;
}
int sayi = 4;
switch(sayi) {
case 0 :
System.out.println(" Sayı 0");
break;
case 1 :
System.out.println(" Sayı 1");
break;
case 2 :
System.out.println(" Sayı 2");
break;
default : System.out.println("X");
break;
VERİ YAPILARI
01 Java Temel Kavramlar
39
DÖNGÜLER : FOR
sayac : kontrol değişkeni olmak üzere,
for(int sayac=0; sayac<10; ++sayac)
ifade
for(başlangıç; devam koşulu; kontrol değişkeni değişimi)
ifade
for(int sayac=0; sayac<10; ++sayac) {
ifadeler
}
VERİ YAPILARI
01 Java Temel Kavramlar
40
DÖNGÜLER : WHILE ve DO-WHILE
while(koşul) ifade
do {
ifadeler
} while (koşul);
int sayac=1, toplam=0;
while(sayac<10) { toplam+=sayac; sayac++; };
VERİ YAPILARI
01 Java Temel Kavramlar
41
DÖNGÜDEN ÇIKMAK : BREAK
for(int x=1; x<10; ++x)
{
toplam+=x;
if (x==5) break;
}
System.out.println("1 ile 5 arasındaki sayıların
toplamı = "+toplam);
break sadece en içteki döngüden çıkar.
VERİ YAPILARI
01 Java Temel Kavramlar
42
DÖNGÜDE ERKEN TEKRAR : CONTINUE
1 ile 100 arasındaki tek sayıları yazan program :
for(int i=0; i<100; ++i)
{
if ( (i%2)!=1) continue;
System.out.println(i);
}
VERİ YAPILARI
01 Java Temel Kavramlar
43
Mantıksal Operatörler
• VE : Conditional AND &&
• VEYA : Conditional OR ||
if ( (yas>50) && (boy>170) ) …;
Conditional ve/veya, kısa devre hesaplaması yapabilir.
• VE : Boolean Logical AND &
• VEYA : Boolean Logical OR |
if ( (yas>50) && (boy>170) ) …;
Boolean mantıksal ve/veya, tüm operand’ları hesaplar.
VERİ YAPILARI
01 Java Temel Kavramlar
44
Bölüm 4
DİZİLER
DİZİLER - I
Dizi (array), aynı tipteki değişkenler topluluğudur.
int[] arr = new int[10];
int[] dizi = {5,7,12,2,9,8,14,21,-6,5};
0
1
2
3
4
5
6
7
8
9
5
7
12
2
9
8
14 21 -6
5
double[] sayilar; sayilar = new double[5];
-3.4
12.5
27.0
1.1
25.33
VERİ YAPILARI
01 Java Temel Kavramlar
46
Diziler - II
Diziler, temel veri tipi listesi veya referans listesi içerebilirler.
Diziler, köşeli parantezlerle ifade edilirler : []
Köşeli parantezler veri tipinden sonraya yerleştirildiğinde, tüm
değişkenleri dizi olarak tanımlar:
int[] sayilar, numaralar;
Köşeli parantezlerin değişkenden sonraya yerleştirilmesi sadece o
değişkeni dizi yapar:
int sayilar[], sayac;
VERİ YAPILARI
01 Java Temel Kavramlar
47
Diziler - III
Diğer referans tipleri (nesneler) gibi diziler de, ya bazı
verileri gösteriyordur veya hiçbir yere işaret etmiyordur.
Hiçbir yeri göstermiyorsa, int sayilar[] = null; şeklinde olduğu gibi
tanımlanmalıdır.
Bellekten 15 tamsayılık yer ayırmak için : sayilar = new int[15];
şeklinde kullanılabilir.
“new” operatöründen sonraki veri tipi, tanımlı değişkenin
veri tipi ile aynı olmalıdır.
Java dizinin her elemanına default olarak 0 değerini atar.
VERİ YAPILARI
01 Java Temel Kavramlar
48
DİZİ KULLANIM ÖRNEKLERİ
dizi[2]++;
dizi[3]=dizi[1]+dizi[2];
System.out.println(dizi[5]);
Dizi elemanlarının toplamını bulduran programı
yazınız : dizi.length kullanınız!
VERİ YAPILARI
01 Java Temel Kavramlar
49
İKİ BOYUTLU DİZİLER (MATRİSLER)
tablo
• MxN
• M satır, N sütun
M=4
0 1 2
 2 15 9  0
 21 33 8  1


 3 17 61 2


89
3
5
 3

N=3
• Oluşturulması : int[][] tablo = new int[4][3];
• Kullanımı : tablo[0][2]
VERİ YAPILARI
01 Java Temel Kavramlar
50
ÇOK BOYUTLU DİZİLER
• Tip []…[] isim = new tip[büyüklük1]...[büyüklükN]
• Tip isim[]…[] = new tip[büyüklük1]...[büyüklükN]
Örnek :
float cbDizi[][][][]; // 4 boyutlu dizi
cbDizi = new float[3][4][2][6];
VERİ YAPILARI
01 Java Temel Kavramlar
51
STRING’LER ve KARAKTER DİZİLERİ
• Karakter dizisi : Karakterlerden oluşan dizidir.
char harfDizi[] = { ‘T', 'e', ‘s', ‘t' };
for(int i=0; i<harfDizi.length;++i)
System.out.println(harfDizi[i]);
• String : Karakter dizisinden farklıdır. Çok sayıda metot içerir.
Java’nın String sınıfı kullanılır.
String str = "Merhaba"; System.out.println(str);
str = new String(harfDizi); System.out.println(str);
VERİ YAPILARI
01 Java Temel Kavramlar
52
Dizilerden Oluşan Diziler
int[][] list = new int[10][];
list[0] = new int[5];
list[1] = new int[10];
list[1][6] = 23;
list[0][6] = 23; /* Hata! Exception in thread "main"
java.lang.ArrayIndexOutOfBoundsException: 6
at Ornek3.main(Ornek3.java:34) */
VERİ YAPILARI
01 Java Temel Kavramlar
53
Bölüm 5
METOTLAR
BÖL ve ÇÖZ (Divide and Conquer)
• Yazılım Mühendisliği deneyimleri, büyük programlar
geliştirmenin en iyi yolunun küçük program parçaları
(modül) yazıp onları birleştirmek olduğunu göstermiştir.
• Böl ve Çöz olarak bilinen bu yöntem aynı zamanda,
hatalardan arındırmayı, programı gelişen şartlara göre
büyütmeyi, değişiklikler yapmayı kolaylaştırmak ve
anlaşılırlığı artırmak gibi birçok avantajı da beraberinde
getirmektedir.
• Java’da temel modüller, sınıf (class) ve metotlardır
(method). Metotlar yazılım içinde yeniden kullanılarak
kodu ve yazılım geliştirme süresini kısaltmaktadır.
VERİ YAPILARI
01 Java Temel Kavramlar
55
METOTLAR (METHOD)
• Bir işlemin yapılması için bir veya daha fazla ifade
kullanmak gerekir. Verilen bir matrisi ekrana yazdırmak
gibi. İlgili kodu “yazdir()” adını verdiğimiz bir metot içine
yazarak istediğimiz zaman, ismi ile çağırabiliriz.
• Java, matematik hesaplamalarını, string, karakter,
girdi/çıktı işlemlerini ve diğerlerini yapmak için hazır
sınıflar ve metotlar içermektedir. Ayrıca değişik alanlarda
hazırlanmış veya kendimizin daha önceden hazırladığı
metotları da kullanmak mümkündür.
• Hazır veya kullanıcı tanımlı paketleri,
import java.util.Random;
import java.util.*;
biçimlerinde görüldüğü gibi “import” kullanılarak yüklenirler.
VERİ YAPILARI
01 Java Temel Kavramlar
56
Java Paketleri
• Hazır Java paketleri içerisinde, birçok sınıf mevcuttur.
java.applet
Java.net
java.awt
Java.text
java.awt.event
Java.util
java.io
Java.swing
Java.lang
Java.swing.event …
• Java.lang paketi, Java’da çok kullanılan sınıfları içerir. Bu paketteki
java.lang.Math sınıfı içerisinde bulunan bazı sahalar ve metotlar
sonraki slaytlarda gösterilmiştir. (Sadece “lang” paketine özgü
olarak, kullanıcının getirme “import” zorunluluğu yoktur)
VERİ YAPILARI
01 Java Temel Kavramlar
57
Field Summary
static double E
static double PI
Method Summary
static double abs(double a)
static float
abs(float a)
static int
abs(int a)
static long
abs(long a)
Returns the absolute value of a double value.
Returns the absolute value of a float value.
Returns the absolute value of an int value.
Returns the absolute value of a long value.
static double acos(double a)
Returns the arc cosine of a value; the returned angle is in the range 0.0
through pi.
static double asin(double a)
Returns the arc sine of a value; the returned angle is in the range -pi/2
through pi/2.
static double atan(double a)
Returns the arc tangent of a value; the returned angle is in the range pi/2 through pi/2.
static double atan2(double y, double x)
Returns the angle theta from the conversion of rectangular coordinates
(x, y) to polar coordinates (r, theta).
static double ceil(double a)
Returns the smallest (closest to negative infinity) double value that is
greater than or equal to the argument and is equal to a mathematical integer.
static double cos(double a)
Returns the trigonometric cosine of an angle.
static double exp(double a)
Returns Euler's number e raised to the power of a double value.
static double floor(double a)
ReturnsVERİ
the largest
(closest to positive infinity) double value that is
YAPILARI
less than01
or Java
equal toTemel
the argument
and is equal to a mathematical integer.
Kavramlar
58
Hazır java.lang.Math sınıfının bazı metotları
static double log(double a)
Returns the natural logarithm (base e) of a double value.
static double log10(double a)
Returns the base 10 logarithm of a double value.
static double max(double a, double b)
Returns the greater of two double values.
static double min(double a, double b)
Returns the smaller of two double values.
static double pow(double a, double b)
Returns the value of the first argument raised to the power of the
second argument.
static long
round(double a)
static double sin(double a)
Returns the trigonometric sine of an angle.
static double sqrt(double a)
double value.
static double tan(double a)
Returns the closest long to the argument.
Returns the correctly rounded positive square root of a
Returns the trigonometric tangent of an angle.
static double toDegrees(double angrad)
Converts an angle measured in radians to an approximately equivalent
angle measured in degrees.
static double toRadians(double angdeg)
Converts an angle measured in degrees to an approximately
equivalent angle measured in radians.
http://java.sun.com/javase/6/docs/api/java/lang/Math.html
VERİ YAPILARI
01 Java Temel Kavramlar
59
METOTLARIN GENEL BİÇİMİ
erişim dönüş_tipi isim(parametre listesi)
{
metodun gövdesi
}
Erişim : public, private gibi
Dönüş_tipi : metodun döndürdüğü veri tipi. Değer
döndürmüyorsa void.
Parametre listesi : “,” lerle ayrılmış tip ve parametre ismi.
VERİ YAPILARI
01 Java Temel Kavramlar
60
Değer Döndürmeyen Metotlar
void metotları
public void yazdir() {
System.out.println("Merhaba");
}
Çağrılması :
yazdir();
VERİ YAPILARI
01 Java Temel Kavramlar
61
Değer Döndüren Metotlar
public int topla(int a, int b) {
return (a+b);
}
Çağrılması :
int y=topla(5,6);
Metodun iki de parametresi var.
VERİ YAPILARI
01 Java Temel Kavramlar
62
Parametre, Argüman, Return
Argüman : Metoda aktarılan değer
Parametre : Argümanı kabul eden değişken
Return : Metottan çıkmak veya geri dönmek
VERİ YAPILARI
01 Java Temel Kavramlar
63
Değişkenlerin Kapsama Alanı
{
…
int x = 5;
if(sayi>5)
{
int y = 12;
…
y değişkeninin tanımlı olduğu bölge
}
// y tanımlı değil
// x tanımlı
}
for(int i=0; i<5; ++i)
System.out.println(i);
i=10; // Hatalı!
VERİ YAPILARI
01 Java Temel Kavramlar
64
Metotlar – Örnek 1
int dizi[] = { 5,6,7,8 }; veya benzer şekilde verilen bir tamsayı dizisinin elemanlarının
toplamını bulan metodu içeren java programını yazınız.
class DiziTopla
{
public static void main(String args[])
{
int dizi[] = { 5,6,7,8 };
System.out.println(topla(dizi));
}
public static int topla(int dizi[])
{
int toplam = 0;
for(int i=0; i<dizi.length; ++i)
toplam+=dizi[i];
return toplam;
}
}
VERİ YAPILARI
01 Java Temel Kavramlar
65
Metotlar – Örnek 2
class Ornek2
{
public static void main(String args[])
{
String str = "test";
nyazdir(str,10);
}
public static void nyazdir(String str, int n)
{
for(int i=0; i<n; ++i)
System.out.println(str);
}
}
VERİ YAPILARI
01 Java Temel Kavramlar
66
Metotlar – Örnek 3
Faktöriyel
class Ornek3
{
public static String f(int n)
{
int carpim = 1;
if (n<0) return "Invalid Input For Function";
else
for(int i=1; i<=n;++i)
carpim*=i;
return ""+carpim;
Sayı döndüren
}
public static void main(String args[])
{
int sayi = 5;
System.out.println(f(sayi));
}
faktöriyel
fonksiyonunu yazınız.
}
VERİ YAPILARI
01 Java Temel Kavramlar
67
Geliştirilmiş for (enhanced for)
Java 5.0 ile gelen bir özelliktir.
For ( parameter : arrayName)
Statement
İki parçadan oluşur :
• Type and identifier : “int sayi” gibi
• arrayName : dolaşılacak (iterate) dizi
Ayrıca, diziler dışında koleksiyonların da
dolaşılmasını sağlar.
VERİ YAPILARI
01 Java Temel Kavramlar
68
Varargs
Varargs (Variable arguments),
bir metodun değişken sayıda
parametre alabilmesidir.
Java 5.0'ın sunduğu
kolaylıklardan biridir.
Aynı amaçla dizi de kullanılabilir
ama elemanları diziye
yerleştirmekten kurtarır. Değerler
metot içine dizi olarak gelir.
Bir metotta sadece 1 varargs
bulunabilir.
class DegSayParametre {
public static void merhabalar(String...
names) {
for (String name : names) {
System.out.println("Merhaba " + name);
}
}
public static void main(String[] args) {
merhabalar("Ali", "Veli", "Ayse");
}
}
VERİ YAPILARI
01 Java Temel Kavramlar
Merhaba Ali
Merhaba Veli
Merhaba Ayse
69
Download