You are on page 1of 94

Java ile Nesne Yönelim

Programlamaya Giriş
Bölüm 3-Türler ve Değiş

Yrd. Do
Bandırm
Bilgisay
adoruk

Tam sayılar

Konular
• Veri, Değişken ve Tür • Değ
• İlkel Veri Türleri • De
• Mantıksal Tür: boolean •

• Karakter Türü: karakter •

• • Yığ
• Gerçek Sayılar • Ye
• Sayıların Temsilleri var
• Karmaşık Veri Türleri • Dü
• Sınıflar, Nesneler ve Referanslar • Tür
• boş • Değ

Veri, Değişk
Tip

Değişken-I

* Programlama dillerinde, sayılarda, karakterle


yapılar
bir veri türünün veri değerlerini tutan değişk
• 5 veya 'a' bir veri, bir değer ve bir sabittir,
gösterir
veriler ve değeri değişebilir.
* Veri, veri değeri ve değer aynı anlamda kull
* Değişkenlere değerler atanır, bunlar üzerinde
değerler ve genellikle değişkenlerin değerler
* Bu yüzden değişken olarak adlandırılırlar.

Değişken-II

* Değişkenler tarafından tutulan veriler opera


ve
yeni değerler oluşturulur.
* Değişkenler yöntemlere aktarılır ve veriler il

etrafında ve yöntemlerinden dönerek progra


.
Tip
* Bir değişkenin alabileceği değerler kümesine

• Tamsayılar, karakterler, doğru veya yanlış

• Tür, özellikleriyle birlikte bu değerler küme

* Türlerin, kümenin niteliğine uygun kuralla


değerler.

Tipsiz ve Yazılı

* Temel soru şudur: Tip bir veri veya değişken


* 5 Tipi tamsayıdır ve' a ' tipi karakterdir.
* "İ = 5" atanırsa, tür bilgisi" i " değişkenine g
* Diller, cevaplarına göre temel olarak ikiye
bu soru, typless ve typed olarak.
Veri, Değişken ve Tür
* Python veya JavaScript gibi bazı dillerde, tür
veriler hakkında bilgi, değişkenin türü yoktur.
* Bu tür dillerde değişkenler, aldıkları veri türünü

tutun, böylece veri türü değiştikçe değişkenin t


de değişir.

Tipsiz veya Dinamik Olar


Diller
* Bu şekilde, derlemede değişkenlerin yazılma

çalışma zamanındaki verilerine bağlı olarak


*değiştirilen
Python, JavaScript ve Scala dinamik olarak
zamana
* Bu typless
tür diller veya
ayrıca dynamically-typed
derleme deni
zamanında herha
yapmazlar
çünkü tür verilere aittir ve veriler bir çalışm

Yazılan veya Statik Yazıla

* Derleme zamanında değişken türünün belirt


ve çalışma zamanında değişmez, Yazılan ve
Yazılan olarak adlandırılır.
* Fortran, Pascal, C / C ++, C #, GO, make m
derleme ve çalışma zamanında analiz ve ko
* Zorunlu olmamakla birlikte derlenmiş diller
olması,
yorumlanan diller tipsiz olma eğilimindedir

Java Güçlü Yazılmış Bir D


* Bazı statik yazılan dillerin daha fazla tür kısı
güçlü
diğerlerinden daha fazla, bu tür diller ya
denir
• Java, güçlü yazılmış bir dildir.
* Bu nedenle, Java'daki her değişkenin derlem
bir türü olmalıdır
zaman ve bu tip bir daha asla değişemez.
* Ayrıca Java türleri ile ilgili katı kuralları vard

Tip Kontrolleri

* Java derleyicisi ve JVM, aşağıdaki kuralları v


derleme ve çalışma zamanında veri ve değiş
• Derleme zamanı türü denetimleri
• Çalışma zamanı türü denetimleri
* Uyumsuzluk durumunda hatalar üretir.
Türler

• org. javaturk. oopj. ch03. Türleri

Tür
Tipler-I
* Java'da iki tür veri türü vardır:
* İlkel tip.
* Bunlara ilkel de denir.
* Karmaşık tip.
• Bu türlere sınıf veya nesne türleri de den

nesnelerine başvurularla erişildiği için sı


türlerinden türetilir
.

Tipler-II

* Nesne yönelimli dillerde ideal olarak yalnızca


beklenir.
bu sınıftan türetilmiş bir nesne.
• Diğer bir deyişle, her veri türü bir sınıf olmal
* Çünkü gerçeklik en temelde anlaşılır ve mo
aşağıdakilere işaret etmelidir:
nesneler, tamsayılar veya karakterler gibi i
gerçeği ifade etmede sınırlıdır.

Tipler-III

* Bununla birlikte, Java'da bu yaklaşım pratik


sapmıştır.
ilkel türler yaratarak nedenler.
* Aritmetik, karakter,
ve mantıksal işlemler.
* İlkel tiplerin sayısı 8'dir ve detayları aşağıda
belirlenmiştir:
öyle ki, dil tasarımı sırasında değişmediler.
* Yenileri oluşturulamaz.
Türleri-IV

* İlkel türler tek bir değerden oluşur, yani atom


* Ancak karmaşık türler bileşiktir, parçalara s
ilkel ve bileşik oluşur:
aşağıdakilerden türlerden biri.
* İlkel türler Java'da zaten tanımlanmış olması
tanımlanamamasına rağmen
değiştirilmiş, karmaşık türler geliştiriciler ta
sınıf, kelimeler
anahtar numaralandırmave
kullanılarakarabirim.
oluşturulur

Türleri-V

* Java'da, kullanım kolaylığı için oluşturulmuş


vardır.
yeniden kullanımı artırarak programlama.
* Java, hazır karmaşık türlerden oluşan zengi
birlikte gelir
Dize, Tarih.
gibi
* Uygulamalarda, aşağıdakiler gibi yenileri Hes
Müşteri,
Oyuncu, FrontController,FinancialQuery
Günlük geliştiriciler tarafından oluşturulur.

Türleri-VI

* Tüm karmaşık türlerin sahip olabileceği özel

bunlar üzerinde yapılabilecek işlemler Java


geliştirici kendi türlerinde yeni özellikler ve
* Değişkenler
* Yöntemler (fonksiyonlar)

İlkel Veril
Türler

İlkel Veri Türleri-I

• İlkel türler (ilkeller) 8'dir :

• bayt , kısa , ınt , uzun, dalgalanmak


, çift , kara

• boolean
Sayısal olmayan tekdüze bir mantıksal türdür:

• Kalan 7 tip sayısaldır.

İlkel Veri Türleri-II


* Hariç karakter
, 6 sayısal türün tümü de imza
pozitif ve negatif değerler.
• karakter
bu bir karakter türüdür ve her karak
değeri vardır.
bir pozitif tamsayı değeri.
* 6 sayısal türden 4'ü tamsayılar içindir ve 2

sayılar
bayt, kısa, int
• * Tamsayılar: ve uzun,

* Gerçek sayılar:dalgalanmak
ve çift

Tam sayı

İlkel Veri Türleri-III


İlkel Veri Türleri

Boole tipi Sayısal türler

İntegral türleri Kay

C harakter
tip türler

boolean karakterbayt kısa int uzun da


Man
Tür
boo

boolean
* boolean bir doğruluk koşulunu ifade etmek
bu doğrumantıksal türdür
ya da yanlış.

* Değişkenler yalnızca doğru veya yanlış değe


boole bayrağı = false;
boolean isClosed = doğru;
boolean oluşturulur;
• Bazı dillerde bulunan mantıksal değerleri (tru
temsil eden sayılar
Java için geçerli değildir.

Kara
Tür:
kara

karakter-İ
* Karakter tipi char ile ifade edilir.
* İki tek kesme işareti arasında bir karakter s
char İlk harf = 'a';
karakter c;

* Java Unicode karakter kümesini kullanır.


* Unicode, Türkçe karakterleri içeren bir sta
ve birçok dünya dili.

char-II
• Karakterlerin sayısal değerleri vardır.
• Unicode karakterler 16 bittir, bu nedenle kar
ile 2^16-1 = 65.535 arasında değerler alır.
'a' = > 97
'A' = > 65
‘9’ => 57
‘ ‘ => 32

• karakter
negatif değer alamaz, sıfır veya pozitif
* Negatif bir değer atanırsa, gerçek değer aşa
belirlenir:
gerektiği kadar 65.536 ekleyerek 0 - 65.535
Karakterler

• org. javaturk.oopj.ch03. ilkeller.


karakterler.Karakterler

Unicode Karakterler-I

* Unicode karakter kümesinin ilk 128 karakter


ilk 256 karakteri oluşturur ve 8 bit ISO 8
kümesi.
* Unicode karakterler şu şekilde ifade edilir:
• ' X' 16. sistem (onaltılık) rakamlardadır.
* Bu nedenle, bir Unicode kodu 4 4 bitlik sayıd
Unicode Karakterler-II
* Unicode eşdeğerlerini kullanabilirsiniz
klavyenizde olmayan karakterler için
.
' ' bile
* Bu kodlar aşağıdakilerden oluşsa \u00
'0' \u00
birden fazla '9' \u00
karakter, tek bir karakter olarak'A'yazılır, \u00
yan
('\u00e7'). 'Z' \u00
'ç' \u00
* Daha fazla bilgi için şu adresi ziyaret
'ß' edin:\u00
http://www.unicode.org

Kaynak Kodu Karakter K

* Java karakterleri Unicode olduğundan Türkç


programlar,
Arapça, İbranice vb. karakterleri kullanabili
"- kodlama XX
* Derleme sırasında şunları gösterebilirsiniz
kaynak dosyada kullanılan karakter kodlama
• Japonca için EUC-JP, Türkçe için ISO8859_
kullanılabilir.
* Bu ayar (bayrak) kullanılmazsa platformun k

Kaynak Kodu Karakter K

* IDE'LER ayrıca platformun karakter kodunu v


kullanır ve
tüm araçlar veya bireysel projeler için girilece
* Eclipse'de projeye sağ tıklayın Özellikler
sen
değerini değiştirebilir Metin Dosyası Kodlam
* Daha fazla bilgi için:
https://docs.oracle.com/javase/8/docs/technotes

UnicodeSelam & TürkçekA


• Aşağıdaki örneklerin derlenmesi ve düzgün ça
UTF-8 projesinin Metin Dosyası Kodlamasını y
.
• org. javaturk.oopj.ch03. ilkeller.
karakterler.Unicodeselam'nın sohbeti

• org. javaturk.oopj.ch03. ilkeller.


karakterler.TürkçekArakterler

UnicodeSelam & TürkçekA

• Aynı örnekleri komut satırında şu şekilde çalış

• Doğru ve yanlış kodlar girerek Java derleyicis


gözlemleyin
.
• Örneğin, aşağıdaki yanlış ve doğru karakter k

javac - kodlama EUC-JP Türkçe karakte


javac - kodlama ISO8859_9 Türkçe kara
javac - kodlama UTF - 8 Türkçe karakte
Çevre Bilgisi

• Çalıştığınız platform, kullandığınız JDK veya ıd


vb. Bilgileri öğrenmek için bu örneği çalıştırab

• Bu örneği hem ıde'nizde hem de komut satırın

• org. javaturk.oopj.ch03.ilkeller. karakterl


Çevre Bilgisi

Kaçış Karakterleri

* Kaçış dizileri için özel karakterler vardır:


\b \u0008 Geri al
\t \ u0009 Yatay tablolama
\n \u000a Hat Beslemesi
\f \ u000c Form beslemesi
\r \ u000d Satır başı
\' \ u0027 Kesme işareti-alıntı
\" \ u0022 Tırnak işareti
\\ \u005c Ters eğik çizgi

* Bu kodlar tek karakter olarak da yazılır ( '\ \ ' ) o


birden fazla karakter.

Kaçar

• org. javaturk.oopj.ch03. ilkeller.


karakterler.Kaçar

Tam sayılar
Tamsayılar-I

• 4 tamsayı türü ve özellikleri aşağıdadır.

• Uzunluklar bit cinsindendir.

• Tüm sınır değerler de aralığa dahil edilir.

İsim Uzunluğu Alt Sınır Ü


bayt 8 -128
kısa 16 -32.768
ınt 32 -2.147.483.648
uzun 64 -9.223.372.036.854.775.808
9.223.372.036.854.775.807
Tamsayılar-II

• Tamsayı türleri için varsayılanınt


tür.

•Başka bir deyişle, türünü herhangi bir yerde b


tam sayı kullanıldığında
, bu bellekte 32 bit olarak temsil edilir.
• Tam sayı olarak belirtmek isterseniz Uzun, "l" ve
numaranın sağında. int i =
uzun l
• Okuma kolaylığı için" L " tercih edilmelidir.
uzun l
uzun l

Tamsayılar-III

• Aynı şekilde, bir belirtmek mümkünbayt kıs


değildir
veya
bayt b = 8;
kısa s = -12;

* Değişkenlere yapılan atamalarda bayt veya


kıs
sağda 8 veya 16 bite dönüştürülür.
• Tabii ki, sağdaki tamsayı değeri 8 veya
16 bit, aksi takdirde sabit atanırken bir derl
ve ifadede garip sonuçlar ortaya çıkabilir.

doğrusu

Tamsayılar-IV

* Bir düzenlemede, kullanmayın bayt veya


kısa
hafızadan tasarruf etmekten daha fazla.
• bayt çoğunlukla gömülü uygulamalarda ve
kullanılır
arayüzler.
• Bu tür yapılarda, bayt diziler (bayt [] ) da y

İkili, Sekizli ve Onaltılık T

• bayt,
Java'da tamsayılar ( kısa, int, ve uz
2 (taban 2, ikili), 8 (taban 8, sekizli) ve 16 (tab
onaltılık) olarak ifade edilebilir.
Java'da en baştan "0" ile başlayan sayılar
8, "0x" veya "0X"ile başlayan sayılar işlenir
. 16. tabanda işlenir:
0132 = 1*8^2+3*8^1+2*8^0 = 90

0x5a = 5*16^1+10*16^0 = 90
0xffff = 15*16^3+15*16^2+15*16^1+15*16
65535

İkili, Sekizli ve Onaltılık T


II

* Java SE 7 ile tamsayıları ikili olarak ifade etm


gelmiştir.
• Bu amaçla gösterimde
0b1010'nın"0b" veya
sohbeti "0B" kullan
= 1*2^3+0*2^2

0B1111'NIN sohbeti = 1*2^3+1*2^

çiftdoktalheksadecimalın
• org. javaturk.oopj.ch03.ilkeller. sayılar.
çiftdoktalheksadecimalıntegerler

Ger
Say
Reel Sayılar-I
* Gerçek (gerçek, gerçek) sayılar:

* Tamsayılar

* Oran olarak yazılabilen kesirli sayılar (rasyon


iki tam sayı (a / b, a ve b tam sayıları ve b 0'd

* Kesirli sayılar tam sayıları (tamsayılar) içer

* Kesirli olarak yazılamayan irrasyonel sayılar.

√2 (2'nin kökü), π (pi) veya e.


* Beğen

Tam sayılar

Reel Sayılar-II
Gerçek Sayılar
(Reel/Gerçel Sayılar)

Rasyonel Sayılar İrrasyonel Sayılar

10.0

1
-8 0 e
-48232
3
1.2 284534852380

pi

3/2 √2
-5/4

Kayan Noktalı Sayılar-I


* Gerçek sayılar bilgisayar aritmetiğinde kayan
nokta.
* Batı ülkeleri sayı olarak nokta (nokta) kulla
kullanırız
virgüller.
* Bu ekran için IEEE 754 İkili Kayan Nokta Ari
yaratıldı.
* Bu standartta reel sayılar tek duyarlıklı olara
bit ve 64 bit olarak çift hassasiyet.

Kayan Noktalı Sayılar-II


* 32 veya 64 bit ile bir aralıktaki tüm gerçek s
* Tamsayılar sayılabilir, ancak gerçek sayıla

sayılabilir sayıda tam sayı vardır, ancak


iki tam sayı arasında sayılamayan bir sayı
* Kayan nokta temsilinin bu nedenle bazı ka
reel sayıları ifade etmede sınırlamalar.

Java'da Kayan Nokta Gös

* Java'da iki tür kayan nokta ekranı vardır


farklı hassasiyet:
• dalgalanmak
32 bittir,
• çift 64 bittir,
dalgalanmak
* Java'nın ve çift türler aşağıdakiler
IEEE 754 İkili Kayan Nokta Aritmetik standa
yüzer ve çift-I

* Gerçek sayılar için varsayılan tür çift .


• Başka bir deyişle, "3.14" gibi bir sayı belirtil
herhangi bir yere yazın, Java derleyicileri bu
gösterecektir
* Gerekli olmasa da, bu durumda" d"veya"D
kullanılabi
numara.
dalgala
* Gerçek bir sayıyı a olarak göstermenin yoluhe
numaranın yanında.

yüzer ve çift-II

* İle ifade edilebilecek en küçük sayı


en büyük sayı 3. 4028235e38f.

* İle ifade edilebilecek en küçük sayı


en büyük sayı 1,7976931348623157e

float pi = 3.14 f;
şamandıra e = 2.71828 F;
çift kapak = 1.22;
çift uzunluk = 10.0 d;
çift alan = 88.15 D;

yüzer ve çift III

• dalgalanmak
İfade etmede kısıtlamalar ve çift sayı
bu sayılarla yapılan işlemlerde. nede

0.1 f + 0.1 f + 0.1 f + 0.1 f + 0.1 f + 0.1 f +

0.1 d * 0.1 d =?

• Bu tür hatalardan kaçınmak için Java'nın aşağ


Büyük Ondalık
kullanmak yerine
gerekir dalgalanmak
çift
veya .

Yüzdürme Noktası
• org. javaturk.oopj.ch03.ilkeller. sayılar.
Yüzdürme Noktası

Tem
sayıl

tam sayılar
Üstel İfadeler

* Kayan nokta sayıları üstel olarak da yazılabil


• Bunun için "e" veya "E" kullanılır:
dalgalan
* Üstel gösterim yalnızca aşağıdakiler içinve
ge
bu şekilde yazılamaz.

çift d1 = 1.6 e-19;


şamandıra f1 = 6. 02E23F;
// Hata!
int i = 1E1;

Sayısal Değerlerde " _ " Ku

* Java SE 7 ile sayısal hale getirmek için "_" ku


ifadeleri okumak daha kolay:
• "_"tüm sayısal sabitlerde, tamsayılarda, ka
kullanılabilir
ve üstel sayılar, sayılar arasında,
* Başlayan ikili, sekizli ve onaltılık tamsayıla
"0b" / "0B", "0" ve "0x" / "0X"ile.

int i = 10_000_000;
çift d = 2_577.930_113;
şamandıra f = 6. 02E2_3F;
int b = 0b1010_1010_101

Sayısal Değerlerde " _ " Ku

• "_"yalnızca iki basamak arasında kullan


• "_"aşağıdaki yerlerde kullanılamaz:

• Başında ve sonunda,
• Yanında "."
•"F", "F", "d", "D", "l" ve "L"nin yanında.

Sayısal Değerlerde " _ " Ku

• "_"yalnızca sayısal sabitlerde kullanılabilir

• Metinsel, dize sunumlarında sayıların kullanılm


sayılara çevrildiğinde bir hata (NumberForma
// Sorun! İnt'e dönüştürülemiyor
Dize s = “10_000_000";

Altını çizer

• org. javaturk.oopj.ch03.ilkeller. sayılar.


Altını çizer

İlkeller
• org. javaturk.oopj.ch03.ilkeller. İlkeller

• Bu örnekte şunlara dikkat edin


• geçerli ve geçersiz değişken adları,
• değişkenlere atanabilecek değerler,
• Üstel kullanımlar,
• diğer bazı basit noktalar.

Karmaşık
Türler
Karmaşık Veri Türleri

• Karmaşık veri türleri, ilkel türlerin aksine,

veriler değildir, birden çok parçayı birleştirir


* Sınıflarla karmaşık veri türleri oluşturulur.
* Sınıflar sadece birden fazla veriyi birleştirme
veriler. davranışları da yanına koyarlar.
zamanda
* Bu nedenle nesne yönelimli dillerde karmaşık
oluşturulur
verileri davranışlarla birleştiren sınıflarla, bu
çalışacaktır.

Sın
Nes
Ref

Sınıf ve Nesne

• Sınıf, ondan oluşturulacak Nesneler için şab


• Nesneler, çalışma zamanında bellekte oluşa

örnekleridir
*. Eğer sınıf bir şablondur, nesne en kalaba
şablonun sonsuz farklı şekillerde.
• Sınıflar ve türler oluşturulur.
• Aynı sınıftan üretilen nesneler aynı türe

Nesne ve Referans

* Nesneler dinamik bellekte yığınlar olarak ka


bu yığınları genişleten/bunlara erişen refera
* Başvuru yerine tanıtıcı, işaretçi vb. Adlar kul
kullanılır.
(bir nesneyetemel
* Referanslar başvurma).
olarak nesnenin adresini b

C/C++ işaretçileri
* C/C++ ' da referansa işaretçi denir ve
bir işaretçi ile nesnenin bellek adresi.
* Bu adreste aritmetik işlemler de yapılabilir.
* İşaretçi aritmetiği
* Java'nın C/C++ anlamında işaretçileri yoktu
işaretçisi
bir referans ve referanslar, nesnelere soyut
mekanizmalarıdır
*. Java'da nesnenin adresi bilinmiyor ve işare
aritmetik.
Nesne ve Referans

• Java'da nesnelere yalnızca referanslarla er

• Referanslar, nesnelere soyut erişim mekan


• Bir referans, bir t anında yalnızca bir nesneyi g
• Bir nesnenin birden fazla referansı olabilir veya b
aynı türdeki nesneleri farklı zamanlarda göstereb
• Aslında, başvuru nesne türüyle aynıdır.
• En azından şimdilik böyle söyleyeceğiz.

Referans Değişkeni

* Referanslar da değişkendir.
• Referans değişkeni

* Referans türü, temsil ettiği nesnenin türüdür


* Referans değişkeni de denir karmaşık
tip karmaşıktır.
İlkel ve Referans Değişke
• İlkel ve referans değişkenler arasındaki en tem
, ilkel değişkenlerin sabit değerlere sahip olma
değişkenlerin değerinin ise gösterdikleri nesn
adresi) olmasıdır.
"j" ve
• Buna göre, değerlerinin ne olduğunu düşüneli
aşağıdaki örneklerde "tmp" olacaktır.
Dize s1 = yeni Dize ("
int i = 5; Dize s2 = yeni Dize ("
int j = ı; Dize tmp = s1;
ı = 7; s1 = s2;
s2 = tmp;

Bu satırdaki j'nin değeri nedir? S1 ve s2'nin değeri nedir


bu hat mı?

// Yığın 1
Dize s1 = yeni Dize ("a"”;
Dize s2 = yeni Dize ("b”);

// Yığın 2
Dize tmp = s1; // tmp = > ” a"

// Yığın 3, s2'yi Geçersiz Kılıyor


s1 = s2; // s1 = > " b”

// Yığın 4
s2 = tmp; // s2 = > ” a"

// Yığın 5 s2'yi Yeniden Atama


s2 = yeni Dize ("c”) // s2 => “c”

İlkel ve Referans Değişke

* İlkel değişkenler kendilerine atanan değerle


* İlkel değişken, atanan değişkene verilen bi
değer.
• Bu nedenle, "j = i"," j","i" değerine sahipt
içinde
* Sonra"i" ve " j " bağımsız olarak farklı değ
aralarında hiçbir bağlantı veya ilişki yoktu

İlkel ve Referans Değişke


* Ancak referanslarda durum farklıdır, sahip o
başvurular, temsil ettiği nesnenin adresidir.
* İfade ile "s1 = s2"," s1 "" s2 " de

yani ikisi de aynı nesneyi gösteriyor.


* Bu nedenle, nesnenin durumunda bir değişik

bir referansla temsil edilen, o nesneyi temsi


bu
değişikliğin farkındadır.

İlkellerve sonuçlar

• org. javaturk.oopj.ch03. referanslar.


İlkellerve sonuçlar

• Bu örnek, ilkel türlerle davranış farkını kapsay

• Ek olarak, referans ile nesne arasındaki ilişki ş


gözlemlenen.
boş

boş-I

* Bir referansın herhangi bir nesneyi temsil


durumda
referans boş , boş.
boş bir nesneyi temsil eden bir referan
* Eğer
boş
, bu referans ile nesne arasındaki ilişki ort
*(erteleme)
Ancak yinevede
referans
nesneye başka referanslar
• boş ilkel değişkenlere atanamaz.

boş-II

• Referansı olmayan bir nesneye a denirkayıp n


• Kayıp nesneler bir çöp toplayıcı tarafından top
bellek sızıntısı oluşturmazlar.

Araba araba1 = yeni Araba ();

...

araba1 = boş; // car1 boş

boş-III

* Bir referansa ulaşmak tehlikelidir sıfır!


• NullPointerException bir istisna atar.

• Bu

, başvurunun herhangi bir nesne göstermediği


olmadığı anlamına gelir.
• Bir referansın olması ihtimali varsa boş , kon
ve ona ulaş.
eğer (araba1 != boş)
araba1.git (50);

Kartest

• org. javaturk. oopj. ch03. referanslar. arab

• Bu örnek
Araba sınıfı.
, aşağıdakilerden oluşturulan nesnelerin özelli
davranışlarını gözlemleyecektir:
Araba Sonuçları

• org. javaturk.oopj.ch03. referanslar.


araba.Araba Sonuçları

• Bu örnek
, başvuru ve nesne ve null başvuru davranışı a
inceler.
• Aynı nesneye birden çok başvuru varsa
, diğer başvurunun bir başvurunun yaptığı değ
gözlemleyin.

Değişke
Değişkenler

• Değişken, verileri (ilkel veya karmaşık) tutm

saklamak için kullanılır.


* Verilerin yapısı temel olarak veri türüne göre
tip.
* Java'da değişkenlerin türü ilkel veya referan
*olabilir
Çünkü veriler ilkel veya referans alınabilir.

Değişken Tanımı

• Java'da değişkenlerin değerleri kullanılma


tanımlanması gerekir.
• Bir değişkenin (tanım) tanımlanması, değişken
(bildirim) tanıtılması ve ona bir başlatma atan
Değişken Tanımı = Değişken Bildirimi + Başla

int sayacı = 7;
boolean kapalı = doğru;
Öğrenci öğrenci = yeni Öğrenci

Değişken Bildirimi
* Bir değişkeni bildirmek, bir giriş cümlesi olu
gelir.
değişkenin türü ve adı.
* Java'nın güçlü bir dil olduğunu ve her değişk
unutmayın!
* Bildirilmemiş bir değişkenin değerine ulaşm
derleme hatasıdır.
* Değişken bildiriminde ilk değer ataması yapı
int sayacı;
bahşiş ısım; boolean kapalı;
Öğrenci öğrenci;

Başlatma-I
* Derleyiciye ada ve türe göre tanıtılan bir değ
yapmalıdır:
türüyle uyumlu bir başlangıç değeri atanma
* Aksi takdirde, değişkenin değeri, sahip old
değeri yok.
* Tanımlanmamış bir değişkenin değerine ul
derlemedir
hata.
* Ancak, ilk değer atamasından sonra değişken

Başlatma-II

• Değişkeni oluştururken başlangıç değeri bilinm


bildirilir
, başlangıç değeri ataması daha sonrasına erte
int sayacı; karakter kara
... ...
sayaç = 5; karakter = 'c'

Öğrenci öğrenci;
...
öğrenci = yeni Öğrenci ();
Başlatma-III

• Bildirirken başlangıç değeri biliniyorsa, bir ata

• Çoğu zaman, başlangıç değerinin


kullanıcı tarafından girilerek veya hesaplanara
atanması beklenir.

int sayacı = 5; Öğrenci öğrenci = ye

int sayacı; Öğrenci öğrenci;


... ...
sayaç = 5; öğrenci = yeni Ö

Değişkenler

• org. javaturk.oopj.ch03. Değişkenler

* Bu örnekte değişken tanımlama, başlangıç değ


atama ve kimlik.
* Java derleyicisinin erişmeye çalıştığında baş
gözlemleyin
tanımlanmamış değişkenlerin değerleri.

Rol
Değ

Değişkenlerin Rolleri-I
* Java'da değişkenler ilkel veya ilkel olmak üze
işlevsellik veya rol açısından referans:
• Nesne değişkenleri (örnek veya nesne d

Nesnenin durumunu oluşturan değişkenler.


• Sınıf değişkenleri: Nesnelerin ortak durum

değişkenler
• Yerel
. değişkenler: Geçici değişkenler.

Değişkenlerin Rolleri-II

• Nesne ve sınıf değişkenlerini kısaca tartışacağ


yerel değişkenler ve kapsam gibi özellikleri in

• Önümüzdeki bölümlerde nesne ve sınıf değişk


olarak tartışacağız
.
Sın
Nes
Değ

Sınıf ve Nesne Değişkenl

• Nesne değişkenleri, nesnenin durumunu oluşt

• Nesne değişkenleri nesnenin bir parçasıdır ve


için kullanılır
.

• Sınıf değişkenleri, o sınıftan oluşturulan nesne


durumlarını ifade
• eder. ve sınıf değişkenleri denir üye değişke
Nesne

Nesne ve Sınıf Değişkenl

* Nesne ve sınıf değişkenleri dünyadaki en öne

nesne yönelimli programlama.


* Nesne değişkenlerine nesnenin referansı ile
* Sınıf değişkenlerine hem sınıflara hem de sın
nesneler. ulaşılır.
referanslarla

Nesne ve Sınıf Değişkenl


* Üye değişkenler, yani nesne ve sınıf değişke
sınıfın içinde (sınıf bloğunda) ancak herhang
*dışında.
En temel alt blok yöntem bloğudur.
* Üye değişkenler sınıf bloğunda tanıtılır ve ge
yöntemlerden önce ve genellikle yöntemlerd

<değiştirici> * sınıf < Sınıfadı>{


< nesne değişkeni > *
<sınıf değişkeni > *
<yöntem > *
}

Araba.java
genel sınıf

kamu Bağ
kamu Bağ
kamu Bağ
genel ınt
• Araba sınıfında 5 nesne değişkeni ve 4 genel ınt

yöntem vardır. kamu çift


• Sınıf değişkenleri yok.


}

kamusal bo
• Nesne değişkenleri …
}
sınıf bloğunda ve sınıfın başında tanıtılırkamusal bo
. }

kamu Bağ

}
}
Yer
Değ

Yerel Değişkenler-I

* Bir sınıfın alt bloklarında tanımlanan değişke


değişkenler.
* Yerel değişkenler, tanımlandıkları bloğun bir
değişkenler değil. bu yüzden yerel olarak adla
sınıf veya nesne,
* Metot parametreleri, metotlarda tanımlanan
bloklar
yöntemler içinde yerel değişkenler vardır.
Yerel Değişkenler-II

* Yerel değişkenler nesnenin bir parçası değild


* Başka bir deyişle, nesnenin durumunu yaratm
referanslar aracılığıyla erişilebilir!
yapamazlar
* Yerel değişkenler, davranışta geçici değerler
bu nesneler sergileniyor.

Yerel Değişkenler-III

* Yerel değişkenlere, aşağıdakileri vurgulamak


da verilir:
doğalarında farklı noktalar:
• Yığın değişkenleri
• Otomatik değişkenler
• Geçici değişkenler
* Bu isimlerin nedenleri gelecekte anlaşılacak
konu "Yığın".

geri dönüş geri dönüş

Araba.java
• İçinde 5 nesne genel sınıf

Araba
{ // Car sınıfındaki

değişkeni ve 4 yöntem vardır kamu çift


mesafe
gitmek
( ınt Yeni Mesafe
+= Yeni Mesafe;
Araba sınıfı. çift dönem = ( çift
dönem;
) Yeni

}
• Sınıf kamusal boşluk
hızlandırmak
( ınt Habe
hız = Haber Akışı
;
değişkenleri yok. }

• Nesne değişkenleri kamusal boşluk


hız = 0;
durmak
() {

}
sınıf
kamu Bağcık getInfo () {
bloğunda ve sınıfın başında tanıtılır
Bağcık bilgi = "Araç Bilgisi:" +
". Mesafe:"

. bilgi;
seyahat etmek"

}
}

Araba ve KarTest
• org. javaturk.oopj.ch03.referanslar.araba.
Kartest

• Bu örnek, nesnedeki ve yerel değişkenleri ince


sınıf.

Yığ
Yığ
Yığın ve Yığın

* Yığın ve yığın, işlem sırasında kullanılan iki f


programlama dillerinin çalışma zamanı.
* Yığın ve yığın da dilimize "yığın" olarak çev
yapıları farklıdır.
* İşletim sistemi bu alanları bellekten sağlama
çalışan programlara RAM, önbellek vb.Yapıl

* JVM ayrıca bu alanları işletim sisteminden al


* Bu alanların boyutu jvm'ye geçirilebilir.

Yığın

* Yığın, JVM tarafından nesneler oluşturmak iç


alanıdır.
* Uzun zamandır dinamik bellek alanı olarak b
bellek sızıntısından
* Genellikle bahsedildiğinde
yığından çok daha büyüktürakla
ve gel
ilk
Yığın-I

* Yığın, şu anda için ayrılmış bellek alanlarının


programda aktif yöntemler.
• Bu yüzden denir çağrı yığını.
"son giren, ilk çıkan (LIFO)".
* Yığın çalışır
* Her yöntemin yığınındaki bellek alanına çerç
ve çerçeveler yığında örtüşüyor.
* Java'da, main'inçerçevesi her zaman önc

Yığın-II

• Ardından, her biri için yığında yeni bir çerç


devam edin
yeni yöntem çağrıldı,
* Yöntem bittiğinde, yığındaki çerçeve şu sıra
onu çağıran yönteme dönersek,
* Bu şekilde yığındaki kareler ters sırada silin
açılış.
* En son ana yöntemin bellek çerçevesi de sil
JVM durur.

Yığın-III

* Yığındaki bellek çerçeveleri, bellek gereksin

açıldığı yöntemin parametreleri, yerel değiş


.
* Yığın boyutu, yönteminin parametrelerine ve

bu yöntemde tanımlanan değişkenler gibi be


boyutu
* Yığın
. silindiğinde, içindeki tüm veriler de sili
StackDemo.java … ana ( Bağcık[] arg'ler
//1
){

f (); … g( bo
//7
u(); eğer
Stackdemo'nun }
//9
}
u

… f (){
iş ve yığının //2 … u(){
g(yanlış);
değişimi. //4
g(doğru);
}

Stackdemo'nun

• org. javatürk. oopj. ch03. StackDemo

• Bu örnekte, programın yığın belleği incelenece

• Programı çalıştırdığınızda, geçerli yığın bilgile


her yönteme yazdırılır.
Yerel Değişkenler ve Yığı

* Yerel değişkenlere aşağıdaki adlar da verilir


• Yığın değişkenleri: Nesneler yığın halind

yığında yerel değişkenler


• Otomatik
oluşturulur.değişkenler: Bulundukları bloğ
yeniden
• Geçici değişkenler:
oluşturulur ve çıktıklarında
Ömürleri,
erişilemez
içinde bulu
hale
ömrüdür
.

Değişkenin Türü ve Rolü

* Yerel veya üye değişken olmak, aşağıdakiler


koşuldur:
değişkenin türüne bakılmaksızın değişkenin
* İlkel bir değişken rol olarak üye değişken i
bir yöntemde oluşturulan, bellekteki yığınd
oluşturulduğu nesne
* Ancak yığında
yığındaki bualanında
adres referansın işaret ettiği ne
bulunur.
yine de yığın.

tespiti

Yer
Değ
Kim
"var

var - I
* Java 10 ile yerel değişkenleri kullanarak tanı
geldi
var , türünün y
* Yerel bir değişken ile tanımlanmışsa
yoktur.
* Bu durumda, Java derleyicisi tür bilgilerini
bağlam.
• Buna denir çıkarım yazın.

var-II

* Değişken ile bildirilemez var , sadece

* Bir değişkene başlangıç değeri verilmezse,


yapamaz.
* Hem ilkel hem de karmaşık tür değişkenleri
var i = 5; // i, int türü
int i = 5; // Yukarıdaki satırla aynı

var i; // Hata! Tür bilgisi olamaz


çıkarıl!
var c = yeni Araba ();
Araba c = yeni Araba ();
var-III

• İle var , yalnızca yerel değişken oluşturulabil


yaratılamaz.

genel sınıf Araba{


var yapmak = ” Xxx";// Hata!
var modeli; // Hata!

}

var-IV
• var bu bir anahtar kelime değil, ayrılmış bir ke
• Bu nedenle Java 10 ile derlenecek ve kullanılaca
değişiklik yapılmasına gerek yoktur var değiş
ve paket adı.

var var = 5; // Sorun değil :)


var sınıf veya arabiri
* Ancak, kullanılan kodlarda
sınıf ve arabirim adları değiştirilmelidir.

VarDemo

• org. javatürk.oopj. ch03. VarDemo


Dür

Kapsam-I
* Değişkenlere erişilebilen alana denir
* Java'da, kapsam bloklarla belirlenir.
stat
* Java'daki kapsam bir derleme zamanı yapıs
veya
kapsambelirleme) ve çalışma zamanında d
* Bazı dillerde çalışma zamanında ayarlanm
vardır.
Kapsam-II
* Değişkenlerin kapsamı, tanıtıldıkları yerdend
bulundukları bloğun sonuna kadar.
* Üye değişkenlerin kapsamı, tanıtıldıkları ye
sınıfın sonu, yani tüm sınıf.
* Yerel değişkenlerin kapsamı, bulundukları
bulundukları bloğun sonuna tanıtıldı.
* Kapsam, dahil etme bloğu içindeki tüm alt ka

Kapsam-III
* Aynı üyeye sahip birden fazla üye veya yerel
aynı kapsamda isim.
* Bununla birlikte, aynı kapsamda, aynı kapsam
ad ve yerel bir değişken.
* Bu durumda, yerel değişkenüye değişkeni g
* Java bu durumda bir değişkene eriştiğinde,
en yakın zamanda tanıtılan değişken
, üye değişkene erişmek için ayrı bir yapı k

Kapsam Dışı

* Bir değişkene kapsamı dışında erişilemez.


* Derleme hatası.
* Bu durumda o değişkenin erişilemez, görünm
dürbün.

İleri Referans

* Java'daki kapsam geriye doğru çalışmaz.


* Kapsam, kodun sözdizimine uygun olarak ge
* Sözcüksel kapsam belirleme
* Bu nedenle ileri başvuru bir derleme hatasıd

int i = j; // Derleyici hata


...
ınt j = 5;

Scopedemo'nun

• org. javatürk.oopj. ch03. ScopeDemo

• Bu örnek değişkenlerin kapsamını tartışacaktı

• Ayrıca ileriye dönük referans yapılamayacağın

Genel Değişken-I
• Birgenel değişken, içinde bir yerde tanımlan
program ve her yerden erişilebilir.
• Global değişkenlerinsınırsız kapsamı vard

* C, C++, Python gibi diller global değişkenler


* Genel değişken, program için negatif bir tasa
• https://en.wikipedia.org/wiki/Global_variable

Genel Değişken-II
• Java'da genel bir değişken yoktur.
* Java'da tüm değişkenler (ve yöntemler) yalnı
tanımlanabilir ve
yalnızca nesneye (veya sınıfa) erişilebilir, bu
kapsamlar vardır.
• Ayrıca, bir sınıf veya nesne için tanımlanan d
diğer sınıf veya nesneler Erişim Değiştiricile
edilebilir .
* En fazla üye değişkenlerin "sınıfa genel" oldu
Tür
Dönüşümle

Tür Dönüşümleri-I

* Sahip olduğu türden farklı türde bir değişke


dönüşme.
a olarak adlandırılır

* Java güçlü bir şekilde yazılmış bir dil olduğu


hem de derlemeyi gerçekleştirir.
çalışma zamanı, ilkel ve karmaşık türler ara
•denetler.
Bu bölümde sadece ilkel arasındaki çeviril
türler.

* Karmaşık türler arasındaki çevirileri daha

Tür Dönüşümleri-II
* Aralarında üç tür dönüşüm olabilir

ilkel türler:
* İmkansız dönüşüm
* Küçükten büyüğe: genişletme
* Büyükten küçüğe: daraltma

boolean b = 12; // İmkansız dön


uzun uzun = 5; // Dönüşümün
int tamsayi = uzun; // Daraltma dön

İmkansız Dönüşüm
* İmkansız dönüşüm, dönüşüm olamayacağını
arasındaboolean ve diğer ilkel türler.
* Arasında bir dönüşüm olamaz bayt ve
ikisi de, çünkübayt ve kısa imzalanır, ancak
* Geri kalan durumlarda dönüşümler mümkünd
kayan nokta sayıları birbirine dönüştürüleb

Gen
Dön
Dönüşümleri Genişletme-

• Genişletme dönüşümü,

bit gösterimi açısından daha dar bir türden


* Java'da çevirilerin genişletilmesi otomatik ol
dönüşümdür.
yoktur
dönüşümün gerçekleşmesi için atama dışınd

Dönüşümün Genişletilme

• Dönüşümleri genişletmek asla çalışma zamanı

• Genişleyen Dönüşümler şunlardır:


Dönüşümün Genişletilme

* İçinde bilgi kaybı olmadığına dair yanlış bir v


çevirilerin genişletilmesi:
* Tamsayıları ve kayan noktaları dönüştürürk
kendi içindeki sayılar.
* Ancak tam sayılardan dönüşümlerde bilgi ka
kayan nokta sayıları.
* Çünkü float ve double ondalık nokta için de
virgülden sonra.

Dönüşümün genişletilme
• org. javaturk.oopj.ch03. dönüşümler.
Dönüşümün genişletilmesi

Dar
Dön

Dönüşümü Daraltma-I
• A daraltma dönüşümü, daha geniş bir türden
bit açısından daha dar tip.

• Daraltma dönüşümleri şunlardır:

* Java'daki çevirilerin dönüştürülmesi otomatik


derleyici
başarısız.
şamandıra f = 3.14; // Derleyici Hatas
int i = 5L; // Derleyici Hatas

Daraltma Dönüşümü-II

* Bu cast operatörü"
( )"daha dardan çeviri yap

* Atarken, çevrilen tür dönüştürmeye yazılır


santral.
// 3.14;
şamandıra f = (şamandıra) başarılı derl
int i = (int) 5L; // başarılı derl

* Bu Java otomatik olarak tercüme edilmez, an


ister
olası bilgi kaybını düşünüyorsunuz.
Daralma Dönüşümü-III

* Bir cast operatörü ile çalışma zamanında hat


* Ancak, dönüşümün bir sonucu olarak, bir v
kayıp.
* Dönüşümün bir sonucu olarak, verilerin boyu
aranan, tüm bit türleri yeni türe aktarılamay
* Bu beklenmeyen sonuçlara neden olabilir.

Daraltma Dönüşümü-IV

* Kayan noktalı sayılardan tamsayı türlerine y


virgül kesildikten sonra.
* Geniş olandan daha dar tamsayı türünün değ
tamsayı türü, çevrilen değere bağlı olarak, t
çıkabilir.
* Ayrıca negatif değer dönüşümünde kara
anlamsız sonuçlar.
• Bu nedenle dönüşümleri daraltma konusund

Daraltma Dönüşümü-V
uzun öç1 = 5;
int i1 = (int) öç1; // Bilgi kaybı yok

uzun lo2 = 100_000_000_000L;


int i2 = (int) öç2; // Bilgi kaybı

çift d1 = 1_918.843_184_454_401;
şamandıra f1 = (şamandıra) d1; // Bilgi kaybı

çift d2 = 3.14;
şamandıra f2 = (int) d2; // Bilgi kaybı yok

çift d3 = 3.14;
int i3 = (int) d3; / 0.14 kayıp

karakter karakter1 = (karakter)-65;// Sorun!

Dönüşümün daraltılması
• org. javaturk.oopj.ch03. dönüşümler.
Dönüşümün daraltılması

Sabit ve niha
"son" Anahtar Sözcüğü

• son Java'nın en fazla sayıda kullanılan ana


farklı bağlamlar.
• 4 farklı şey olabilir son java'da,
son
olması gereken değişkenler
tartışılacaktır.
• son bir değiştiricidir ve nitelendirdiği şey
anlamına gelir
bir anlamda değişim.
• Bu "duyu" neyi nitelediğine bağlıdır.

Sabitler-I

son
* Ne zaman değişkenlerle kullanılır, onları
son java'da
* O zamandan beri sabit değer değişkenle
kullanımı devamanahtar kelime.
• son değişkeni bildirirken değiştirici olar
* İle tanıtılan değişkenin değeri son
değiştirmeye çalışmak bir derleme hatasıdır

Sabitler-II

* Sabit değerli, değişmeyen değişken (Son / Sa


garip olabilir, bu nedenle daha anlamlı olma
/ sabit.
* Java Dili Belirtimi "sabit değişken" kullanır.

İlkel sabitler

* Değişkenin değeri çalışma zamanında belirle


boş bir sabit olarak tanıtılabilir.
• Bu durumda, bir kerelik bir başlangıç değeri
değişken, değeri tekrar değiştirilemez.

son giriş;
son int i = 5;
ı = 8; // Bir d
ı = 8; // Derleyici hatası.
ı = -3; // Derle

Sabit Referans
* Referansın sabit mi yoksa değiştirilemez mi
ilkel değişkenlerden farklıdır.
* Son Referanslar, sahip oldukları nesneden b
gösteremez.
göster, göstermeye çalıştıklarında derleyici
* Referanslar boş değişmez olarak da tanımlan

son Araba c = yeni Araba ();


c = yeni Araba (); // Derleme zamanı hata

son Araba c;
c = yeni Araba (); // Derleme zamanı hata
c = yeni Araba (); // Derleme zamanı hata
Sabit Nesne
* Nesneler doğrudan yapılamaz son , ancak n
yapılabilir.

* Bu şekilde durumu değişmeyen ve sabit ola

nesne elde edilir.

* Ancak bu yaygın değildir.

* Genellikle nesnelerin yalnızca bazı alanla

Sondeğişiklikler

• org. javaturk.oopj. ch03. sondeğişiklikler


Sabit Değişken-I

* İlkelin son değişkenine sabit bir ifade atanm


sabit değ
veya Dize türü, bu değişkene a denir
* Sayı, karakter, mantıksal ve dize sabitleri (
Java'da kullanılanlar 2. bölümde tartışılmış

Sürekli İfade-I

* Bu sabit ifade, ilkel veya Dize türündeki de


ve
varsa diğer sabit değişkenlerle birlikte ilkel v
* Sabit ifadenin değeri derleme zamanında bilin
sabit oluşturmak için kullanılan bazı seçili işl
son boolean b=!doğru;
son giriş ı = 1 * 2 * 3 * 4 * 5 * 6;
son şamandıra f = (şamandıra) (7 * Mate
2; son çift d = 2.0 * Matematik.PI;
son Dize s1 = " Java iyidir!”;
son Dize s2 = "Tam sayı" + 5;

Sabit İfade-II

* Sabit ifadenin üreteceği değer,

çalışma zamanına bağlı olun. Derleme zama


.
• Bu nedenle, örneğin yöntem çağrısı sabit ola
çünkü yöntemler çalışma zamanı yapılarıdır

Sabit Değişken) - II
* Sabit bir değişken boş olarak bildirilemez.
• Eğerson
birdeğişken boş olarak ilan edilir ve d
değerini alır.
giriş, bu sadece bir son değişken, sabit b
* Sabit değişkenler, yüklemeleri ve çalışması i
dil.
* Dildeki bazı yapılar, örneğin anaht
kullan
sabit değişkenler.

Sabit Değişken-III

* Genel olarak, sabit değişkenler bir kez oluştu


yerleştirilir.
* Programda ihtiyaç duyulduğunda bu havuzd
tanıtıldı
* Sabit ve asla değişmeyecek.
değişkenlerin değerlerini aldıkları zam
edilmelidir.
Sabitdeğişkenler

• org. javaturk. oopj. ch03. sabitdeğişiklikle

You might also like