These notes cover almost every aspects of core Java. At the time you have seen this content, there might be Turkish headers and subheaders. Learner of java programming language, I try to upload new topics and edit some of them. As I repeat the lessons uploaded here, edits will be increasing. When finishing Core Java Course I will complete editing these lessons and start to use as a reference.
- Hello, World
- Yorum satırları (comment lines)
- Atomlar (token)
- Java' da atomlar arasında istenildiği kadar boşluk (whitespace) bırakılabilir
- Anahtar sözcükler ve değişkenler dışında atomlar bitişik yazılabilir.
- Java'da paket bildiriminin (declaration) genel biçimi:
- Java'da Metot bildirimi
- Java'da Metot çağırmanın (call) genel biçimi:
- Java'da Metotların çağrılmasi
- Javada Çagiran metodun (caller) ait oldugu sinif ile çagrilan metodun (callee) ait oldugu sinif ayni pakette ise çagirma sirasinda paket ismi yazilmayabilir.
- Java'da Çagiran metot ile çagrilan metot ayni sinifta ise çagirma sirasinda sinif ismi yazilmayabilir.
- Tür nedir ?
- Java'da Değişken bildiriminin genel biçimi:
- Java'da değişken bildirimi 3(üç) şekilde yapılabilir:
- Bir metot içerisinde istenildiği kadar içiçe veya ayrık bloklar olabilir.
- Bir blok içerisinde herhangi bir yerde bildirilen değişkenlere yerel değişkenler denir.
- Aynı türden yerel değişkenler aralarına virgül konarak bildirilebilirler
- Yerel değişkenlere ilk değer verilmesi
- Yerel bir değişkenin faaliyet alanı bildirildiği yerden bildirildiği bloğun sonuna kadardır
- Aynı faaliyet alanı içerisinde aynı isimde yerel değişken bildirimi geçersizdir
- Farklı faaliyet alanları içerisinde aynı isimde yerel değişken bildirimi yapılabilir
- Farklı faaliyet alanları içerisinde aynı isimde yerel değişken bildirimi yapılabilir
- print ve println metotları değişkenlerin içerisindeki değerleri ekrana basabilirler
- İçerisine değer atanmamış hiç bir değişken kullanılamaz yani içerisinde değer varmış gibi işlem yapılamaz
- Yerel değişkenlere değer atanması programcının sorumluluğundadır
- Değişken isimleri rakam karakteri ile başlatılamaz
- Değişken isimleri uygun karakterler ile başlatılıp istenildiği kadar rakam karakteri ile devam ettirilebilir
- Değişken isimlendirmede UNICODE alfabetik karakterler kullanılabilir. Yani isimler Türkçe karakter de içerebilir
- Değişken isimleri büyük küçük harf duyarlıdır (case sensitive)
- Değişken isimlendirmede boşluk (whitespace) karakteri kullanılamaz
- Değişken isimlendirmede _ karakteri kullanılabilir. Hatta değişken _ ile de başlatılabilir
- Java 9'dan itibaren alttire karakteri tek başına değişken ismi olarak kullanılamaz.
- Java' da değişken isimlendirmede $ karakteri kullanılması durumu...
- Değişken isimleri doğrudan anahtar sözcüklerden oluşamaz. Ancak ...
- Değişken isminin kolay telaffuz edilebilir, anlamlı ve yeterince uzunlukta olması tavsiye edilir
- Klavyeden int türden değer okunması
- Klavyeden double türden değer okunması
- Klavyeden long türden değer okunması
- İfade (expression)
- return deyimi
- return deyimi nasıl kullanılırsa kullanılsın metodu sonlandırır.
- Akış return deyimine geldiğinde önce return deyimine ilşkin ifade hesaplanır. Sonuç döndürülür
- Geri dönüş değeri olan metotlarda akışın her noktasında return deyimi ifade ile bulunmalıdır.
- Geri dönüş değeri olan metotlarda return tek başına kullanılamaz
- Derleyici geri dönüş değeri aktarımı için geçici değişken yaratan kodu üretir.
- Bir metodun geri dönüş değeri başka bir metodun geri dönüş değeri olarak return deyimi ile yazılabilir
- Geri dönüş değeri olan metotlar geri dönüş değeri yokmuş gibi çağrılabilir.
- Geri dönüş değer olmayan metotlarda (void metot) return zorunlu değildir
- Geri dönüş değer olmayan metotlarda istenirse return tek başına metodu sonlandırmak için kullanılabilir
- Geri dönüş değer olmayan metotlar geri dönüş değeri varmış gibi çağrılamaz
- Bir metodun bildiriminde parantez içerisinde bildirilen değişkenlere parametre değişkenleri denir
- Parametre değişkenleri aynı türden olsa bile her değişken için tür bilgisi yazılmalıdır
- Parametre değişkenleri faaliyet alanı bakımından adeta metodun gövdesi (bloğu) başında bildirilen yerel değişkenler gibidir
- Metotlarda argüman nedir?
- Bir metot kaç parametreliyse o kadar sayıda argüman ile çağrılabilir
- Metot çağrısında argümanlara ilişkin ifadeler önce hesaplanır. Elde edilen değerler ile metot çağrılır
- Bir metodun geri dönüş değeri başka bir metoda argüman olarak geçilebilir
- printf metodu
- Tamsayı türlerinin (short, int, long, byte) decimal formatlanması için d format karakteri kullanılır
- printf metodu ile x, X, h ve H format karakterleri kullanılarak tamsayı türleri hexadecimal olarak gösterilebilir
- printf metodu ile o format karakteri kullanılarak tamsayı türleri octal olarak gösterilebilir
- printf metodunda gerçek sayı türleri (double, float) için f format karakteri kullanılabilir
- printf metodu ile virgülden sonra kaç basamak gösterileceğinin belirlenmesi
- printf metodu ile hizalama yapılması
- printf metodunda c format karakteri ile char türüne ilişkin karakter gösterilebilir
- printf metodunda b format karakteri ile boolean türüne ilişkin değer gösterilebilir
- System.out.format metodu printf ile tamamen aynı işi yapar
- printf ile % karakterini gösterebilmek için iki tane yanyana % karakteri kullanılmalıdır
- Math sınıfının abs metodu
- Math sınıfının sqrt metodu
- Gerçek sayılar içinde belirsizlik ve tanımsızlık NaN nedir ?
- Math sınıfının pow metodu
- Math sınıfının PI ve E elemanları
- Sınıf Çalışması: Koordinat bilgilerine göre iki nokta arasındaki uzaklık bilgisini döndüren distance isimli metodu yazın.
- Math sınıfının trigonometrik metotları radyan ölçü birimi ile çalışır
- Math sınıfının toRadians metodu
- Math sınıfının logaritma metotları
- MathUtil sınıfının log metodu
- Math sınıfının min ve max metotları
- Math sınıfının yuvarlama yapan temel metotları
- Sabitler (literals)
- char türden sabitler
- Tek tırnak içerisinde özel durumlar dışında birden fazla karakter yazılamaz.
- Ters bölüden sonra özel karakterler dışında karakter yazılamaz
- Ters bölü karakteri tek tırnak içersine iki tane olarak yazılmalıdır
- Tek tırnak karakter sabiti tek tırnak içerisinde ters bölü ile yazılmalıdır
- İki tırnak karakter sabiti tek tırnak içerisinde iki türlü kullanılabilir
- İki tırnak içerisinde (String atomunda) ter bölü yazılması gereken karakterler anlamlıdır.
- Aşağıdaki durumda ters bölüden sonra özel karakter kullanılmadığından error oluşur
- İki tırnak karakteri iki tırnak içerisinde ters bölü ile kullanılmalıdır
- İki tırnak karakteri iki tırnak içerisinde ters bölü ile kullanılmalıdır
- Tek tırnak karakteri iki tırnak içerisinde iki şekilde kullanılabilir
- Tek tırnak karakteri iki tırnak içerisinde iki şekilde kullanılabilir
- Ters bölü ve u ile bir karakterin yazılması
- Ters bölü u ile değişken isimlerine ilişkin karakterler de belirlenebilir
- Ters bölü u iki tırnak içerisinde de anlamlıdır
- Bir tamsayı önüne bir ek almadan yazıldığında decimal yazılmış olur
- Tamsayı sabitinin önünen sıfır ve x (büyük veya küçük) yazıldığında bu ekten sonra gelen basamaklar hexadimal basamaklar olarak yazılabilir
- Tamsayı sabitinin önünen sıfır yazıldığında bu ekten sonra gelen basamaklar octal basamaklar olarak yazılabilir
- Java 7 ile birlikte sabitin başına sıfır ve b (büyük veya küçük) yazıldığından ikilik sistemde basamaklar yazılabilir
- Gerçek sayı sabit sabitlerinin üstel gösterilişi
- Java 7 ile birlikte bir sabit içerisinde alttire karakteri kullanılabilmektedir
- Alttire karakteri kullanılabildiği yerde istenildiği kadar yazılabilir
- Alttire karakteri karakter sabitleri içerisinde geçersizdir
- Alttire karakteri sabitin başında ya da sonunda geçersizdir
- Alttire karakteri sayı nokta içeriyosa noktadan önce ya da sonra geçersizdir
- Alttire karakteri sabit sonundaki eklerden önce ya da sonra kullanılamaz
- Alttire karakteri sabitin önündeki eklerden önce sonra veya arasında geçersizdir
- Octal sabitler için önek ile sabitin ilk basamağı arasında alttire karakteri geçerlidir
- Octal sabitin önekinden önce alttire yine geçersizdir
- Gerçek sayı sabitlerinin tamsayı kısmının değeri sıfırsa noktadan önce sıfır yazılmayabilir.
- Operatörler
- Aritmetik 4 işlem ve mod operatörü (bölme hariç)
- Bölme işleminde operandlar tamsayı türündense sonuç tamsayı türünden çıkar.
- Mod operatörünün birinci operandı negatif ise sonuç hep negatif çıkar. Pozitif ise hep pozitif çıkar
- Mod operatörü Java' da gerçek sayılar için de kullanılabilir
- Sınıf Çalışması: getDigitsSum metodunu yazınız.
- İşaret - operatörü
- İşaret + operatörü
- ++ operatörü iki şekilde operatörü postfix ve prefix olarak kullanılabilir.
- ++ operatörünün prefix kullanımında ürettiği değer (işleme giren değer) artırılmış değerdir
- ++ operatörünün postfix kullanımında ürettiği değer (işleme giren değer) artırılMAmış değerdir
- -- operatörü iki şekilde operatörü postfix ve prefix olarak kullanılabilir.
- -- operatörü iki şekilde operatörü postfix ve prefix olarak kullanılabilir.
- -- operatörünün prefix kullanımında ürettiği değer (işleme giren değer) azaltılmış değerdir
- ++ ve -- operatörlerinin kullanımı
- Derleyici yukarıdan aşağıya ve soldan sağa olmak üzere anlamlı en uzun ifadeyi alacak şekilde atomlarına ayırma işlemini yapar
- Karşılaştırma operatörleri karşılaştırmanın sonucuna göre boolean türden değer üretir
- Mantıksal VE (AND) operatörü
- Mantıksal VEYA (OR) operatörü
- Mantıksal operatörlerin kısa devre (short circuit) davranışı
- Mantıksal operatörlerin kısa devre (short circuit) davranışı (2)
- Mantıksal operatörlerin kısa devre (short circuit) davranışı (3)
- Bitsel AND (&)ve bitsel OR (|) operatörleri tamsayılar ile çalışırlar.
- Mantıksal değil operatörünün flag değişkenlerde kullanımı
- Atama operatörü sağdan sola önceliklidir
- İşlemli atama operatörlerinin genel biçimi:
- Metot çağırma operatörü
- Java' da etkisiz ifadeler genel olarak error oluşturur
- Deyim (statement)
- Basit deyim
- Bileşik deyim
- Bildirim deyimleri
- Boş deyim
- if deyiminin genel biçimi
- Aşağıdaki örnekte else'in ait olduğu bir if deyimi olmadığından error oluşur
- Aşağıdaki örnekte else kısmı içteki if deyimine ait olur (dangling else)
- Yukarıdaki örnekte dangling else durumu aşağıdaki gibi bileşik deyim koyarak düzeltilebilir
- if deyiminin koşul parantezinde boolean türden ifadeler için == veya != operatörleri kullanılması
- isEven metodu kullanarak isOdd metodu aşağıdaki gibi yazılabilir
- boolean türden bir metot çağrısının if deyiminde kullanımı
- Sınıf Çalışması: Katsayıları klavyeden girilen ikinci dereceden bir denklemin köklerini bulup ekrana basan programı yazınız
- Döngü deyimleri
- while döngüsünde n-kez dönen döngü kalıbı (dizi uyumlu)
- while döngüsünde n-kez dönen döngü kalıbı
- while döngüsünün parantezi içerisinde okunabilirliği etkilemedeği sürece aşağıdaki gibi bir kod yazılabilir.
- Sınıf Çalışması: Klavyeden sıfır girilene kadar alınan sayıların pozitif ve negatif olanlarının ayrı ayrı toplamlarını bulan programı yazınız
- Sınıf Çalışması: Parametresi ile aldığı int türden bir sayının basamak sayısını döndüren getDigitsCount isimli metodu yazınız
- Sınıf Çalışması: Parametresi ile aldığı int türden bir sayının basamakları toplamını döndüren getDigitsSum isimli metodu yazınız
- Sınıf Çalışması: Parametresi ile aldığı int türden bir sayının tersini döndüren getReverse isimli metodu
- Kontrolün sonda yapıldığı while döngü deyimi (do-while döngüsü):
- do-while döngüsü içerisinde bildirilen bir değişken while parantezinde faaliyet alanı kuralları gereği kullanılamaz
- Yukarıdaki örnek aşağıdaki gibi çözülebilir
- Sonsuz döngü: Döngünün koşulundan dolayı sonlanmadığı döngülere denir.
- Sonsuz döngünün sonlandırılması
- for döngü deyimi
- for döngü deyiminin 1.kısmında değişken bildirimi yapılabilir.
- for döngü deyimi ile n-kez dönen döngü kalıbı (dizi uyumlu)
- for döngü deyimi ile n-kez dönen döngü kalıbı
- for döngü deyiminin birinci ve üçüncü kısmında virgül ayracı ifade ayırmak için kullanılabilir
- for döngü deyiminin birinci ve üçüncü kısmında virgül ayracı ifade ayırmak için kullanılabilir (2)
- for döngü deyiminin birinci kısmında değişken bildirimi varsa virgülle ayırarak bildirim dışında bir ifade yazılamaz.
- for döngü deyiminin ilginç bir kullanımı
- for döngü deyiminin ilginç bir kullanımı (2)
- for döngü deyiminin 3.kısmının boş bırakılması durumu
- for döngü deyiminin 1.ve 3.kısmının boş bırakılması while döngü deyimine benzetilebilir
- for döngü deyiminin 2.kısmının boş bırakılması sonsuz döngü oluşturmak demektir
- for döngü deyimi ile sonsuz döngü kalıbı
- Sınıf Çalışması: Parametresi ile aldığı int türden a ve b değerleri için a'nın b-inci kuvvetini döndüren pow isimli metodu yazınız.
- Sınıf Çalışması: Parametresi ile aldığı int türden bir sayının Armstrong sayısı olup olmadığını test eden isArmstrong metodunu yazınız ve test ediniz.
- Sınıf Çalışması: Parametresi ile aldığı int türden bir sayının faktoriyelini döndüren factorial isimli metodu yazınız ve test ediniz.
- Sınıf Çalışması: Parametresi ile aldığı int türden bir sayının asal olup olmadığını test eden isPrime metodunu yazınız ve test ediniz
- Sınıf Çalışması: Parametresi ile aldığı int türden bir sayının asal olup olmadığını test eden isPrime metodunu yazınız ve test ediniz
- Yukarıda yazılan isPrime metotlarının performanslarını gösteren basit bir test
- Sınıf Çalışması: Parametresi ile aldığı int türden bir n değeri için n-inci asal sayıyı döndüren getPrime isimli metodu yazınız.
- Sınıf Çalışması: Parametresi ile aldığı n sayısı için n-inci fibonacci sayısını döndüren getFibonacci isimli metodu yazınız.
- Sınıf Çalışması: Parametresi ile aldığı sayıdan büyük ilk Fibonacci sayısını döndüren getNextFibonacciNumber isimli metodu yazınız ve test ediniz
- İçiçe döngüler
- Programcı bazen tek bir döngü yazsada döngü içerisinde çağrılan metotlar içerisinde de döngü kullanılmışsa içiçe döngü yazılmış olur
- 3 basamanklı Armstrong sayılarının içiçe döngü ile bulunuşu
- break deyiminin genel biçimi.
- Aşağıdaki örnekte içteki döngüde bir koşul gerçekleştiğinde dıştaki döngü sonlandırılmıştır
- Etiketli break deyimi ile yukarıdaki örnek daha okunabilir olarak değiştirilebilir
- Etiketli break deyiminin kullanımı
- continue deyimi döngüyü değil döngünün adımını sonlandırır
- Menülerle işlem yapılabilen basit bir iskelet program
- switch deyiminin genel biçimi
- switch deyiminde default bölüm olmak zorunda değildir.
- switch deyiminde default bölümününm yerinin önemi yoktur. Şüphesiz sona konması daha uygundur
- switch deyiminde bir case bölümüne ilişkin ifadenin sabit ifadesi olması gerekir
- switch deyiminde birden fazla aynı değere sahip case bölümü geçersizdir
- switch deyiminde birden fazla aynı değere sahip case bölümü geçersizdir (2)
- switch deyiminde temel türler için tamsayı türleri ve char türü dışında hiç bir tür kullanılamaz.
- switch deyiminde aşağı düşme (fall through) özelliği vardır.
- switch deyimi char türü için de kullanılabilir
- Menülerle işlem yapılabilen basit bir iskelet program
- Menülerle işlem yapılabilen basit bir iskelet program
- Sınıf çalışması:isLeapYear isimli metodu yazınız ve test ediniz
- Sınıf çalışması: isValidDate isimli metodu yazınız ve test ediniz
- Sınıf çalışması:getDayOfYear isimli metodu yazınız ve test ediniz.
- Sınıf çalışması: getDayOfYear isimli metodu yazınız ve test ediniz.
- Sınıf çalışması: getDayOfWeek metodunu yazınız.
- Tür Dönüşümümlerine genel bakış
- Aşağıdaki örnekte long türünün içerisindeki değere bakılmaksızın atama geçersiz olduğundan error oluşur
- Küçük tamsayı türünden büyük tamsayı türüne doğrudan atama yapılabilir.
- Küçük tamsayı türünden büyük tamsayı türüne yapılan atamalarda tamsayı türüne ilişkin değer pozitif veya sıfır ise nasıl besleme yapılır ?
- Hiç bir türden char türüne doğrudan atama yapılamaz
- Yukarıdaki kuralın istisnası olarak "char türü sınırları içerisinde kalan int türden bir sabit" char türüne doğrudan atanabilir.
- char türünden short türüne doğrudan atama geçersizdir.
- char türünden kendisinden uzunluk olarak büyük türlere doğrudan atama geçerlidir.
- char türünden kendisinden uzunluk olarak büyük türlere doğrudan atama geçerlidir.
- short türünden char türüne doğrudan atama geçersizdir
- Bilindiği gibi Java'da byte ve short türden sabit yoktur. Ancak "sınırlar içerisinde kalan int türden bir sabit" byte/short türüne atanabilir
- Bütün tamsayı türlerinden gerçek sayı türlerine doğrudan atama geçerlidir
- Gerçek sayılardan tamsayı türlerine atama geçersizdir
- float türünden double türüne doğrudan atama geçerlidir
- double türünden float türüne doğrudan atama geçersizdir
- boolean türünden herhangi bir türe doğrudan atama geçersizdir
- Herhangi bir türden boolean türüne doğrudan atama geçersizdir
- Temel türler için doğrudan dönüşüm tablosu:
- short, byte ve char türlerine "sınırlar içerisinde kalması koşuluyla int türden sabit atanması" kuralları metot çağrısında argümanlardan parametrelere yapılan atama işleminde geçersizdir
- Aşağıdaki örnekte float türüne atamalar yapılmıştır. Çıktıları inceleyiniz
- Aşağıdaki örnekte klavyden float değer alındığında yuvarlama hatası oluşabilir
- Yukarıda söylenen sabite ilişkin detaylar sabit ifadeleri için de geçerlidir. Zaten sabit ifadelerinin sonucu da sabittir
- İki operandlı bir operatör için derleyici önce operandların türlerine bakar. Operandlar farklı türdense önce ortak türe dönüştürür sonra işlemi yapar.
- İşlem öncesinde her iki operand da byte, short ve char türlerindense (yani uzunluk olarak int türünden küçükse) her iki operand da int türüne yükseltilir (integer promotion), sonuç int türden çıkar
- Gerçek sayı türleri ve tamsayı türleri işleme sokulduğunda dönüştürme gerçek sayı türüne doğrudur ve sonuç dönüştürülen gerçek sayı türünden çıkar.
- Bölme işleminde her iki operand da tamsayı türlerine ilişkinse sonuç tamsayı türünden çıkar. Bölme işlemi yapılır. Elde edilen değerin noktadan sonraki kısmı atılır
- Küçük tamsayı türü ile büyük tamsayı türü işleme sokulduğunda dönüşüm büyük tamsayı türüne doğrudur. Sonuçta büyük tamsayı türünden çıkar
- boolean türü hiçbir tür ile işleme sokulamaz
- char türü diğer türlerle işleme sokulabilir
- İşlem öncesi otomatik tür dönüşümü geçici değişken yaratılarak yapılır. Örnekte derleyici aşağıdakine benzer bir kod üretir:
- Tür dönüştürme operatörünün genel biçimi:
- implicit olarak yapılabilen dönüşümler explicit olarak da yapılabilir. Ancak bunun kullanımı anlamsızdır
- Aşağdaki explicit dönüşüme ilişkin maddeler else-if biçiminde değerlendirilmelidir
- Büyük tamsayı türünden küçük tamsayı türüne yapılan explicit dönüşümde sayının yüksek anlamlı byte değerleri atılır. Elde edilen değer hedef tamsayı türüne atanır
- short türünden char türüne yapılan explicit dönüşümde sayının bit kalıbı değişmez. Bitlerin yorumlanışı değişir
- byte türünden char türüne yapılan explicit dönüşüm iki aşamada geçekleşir. Birinci aşamada değer int türüne dönüştürülür. İkinci aşamada yüksek anlamlı byte değerleri atılarak char türüne dönüştürülür
- double türünden float türüne yapılan explicit dönüüşmde bilgi kaybı olabilir. Bu durumda IEEE754 standardına göre yuvarlama kuralları kullanılarak float türünde gösterilebilecek en yakın değer elde edilir
- Tür dönüştürme operatörü ile de boolean türünden hiç bir türe ve hiç bir türden boolean türüne dönüşüm yapılamaz
- Gerçek sayı türünden tamsayı türüne explicit dönüşüm şu aşamalarla gerçekleşir:
- Bazen tür dönüştürme operatörü kullanılmazsa bilgi kaybı oluşabilir
- Aşağıdaki örnekte double türden sabit kullanıldığından doğru işlem yapılmıştır.
- İşlemli atama operatörlerinin çalışma biçimi:
- Bir sayının log10 kullanarak basamak sayısının bulunması
- Homework-005-1. sorunun bir çözümü
- Koşul operatörünün genel biçimi
- Aşağıdaki örnekte b + 200 ifadesi koşul operatörünün 3. operandıdır
- Aşağıdaki örnekte 200 sayısı koşul operatörünün ürettiği değer eklenmiştir
- Koşul operatörünün ürettiği değer bir işleme sokulabilir
- Koşul operatörü return deyimine ilişkin ifadede kullanılabilir
- Koşul operatörü bir metoda argüman olarak verilebilir
- Bir sayının log10 kullanarak basamak sayısının bulunması
- Sınıf Çalışması: getDayOfWeek metodunu yazınız.
- Koşul operatörünün opandlarında ilişkin ifade void bir ifade olamaz
- Koşul operatörünün bir kullanımı
- Aşağıdaki örnekte koşul operatörünün daha okunabilir olması için gerekmese de parantez konmalıdır
- Aşağıdaki foo metotları ayrı sınıflarda olduklarından herhangi bir problem oluşmaz. Bu işlem method overloading değildir.
- Method overloading nedir ?
- Bir metodun static olup olmamasının overload işlemine etkisi yoktur
- Bir metodun geri dönüş tür bilgisinin overload işlemine etkisi yoktur.
- Bir metodun parametre değişkenlerinin isimlerinin overload işlemine etkisi yoktur.
- Bir metodun overload edilebilmesi için parametrik yapısı farklı olması gerekir.
- Bir metodun imzası nedir?
- Overload Resolution işlemi nasıl gerçekleşir?
- Bir değişkenin faaliyet alanı ve ömrü nedir?
- Sınıfın elemanları: metot ve veri elemanı.
- Sınıfın veri elemanı nedir?
- Bir sınıf içerisinde aynı isimde birden fazla veri elemanı bildirimi yapılamaz.
- Sınıf bildirimi bir tür bildirimidir!
- Sınıf bildirimi bir tür bildirimi olduğuna göre sınıf türünden de değişkenler bildirilebilir.
- Java' da türler kategori olarak iki gruba ayrılır: değer türleri (value types), referans türleri (reference types).
- Sınıf türünden bir değişkene referans değişken ya da referans denir.
- Java'da nesne yaratılması.
- Sınıfın non-static veri elemanları her nesne için ayrıca yaratılır.
- Non-static veri elemanlarına nesnenin yaratılması aşamasında default değerler atanır.
- Java'da nesnenin bellekte kapladığı alan en az non-static veri elemanlarının toplam uzunluğu kadardır.
- İki aynı türden referansın birbirine atanması iki referansın da aynı nesneyi göstermeleri demektir.
- Referans parametreli metotlar olabilir.
- Referans parametreli metotlar aldıkları referansa ilişkin nesne üzerinde değişiklik yapabilirler .
- Referans geri dönen metotlar ile bir nesnenin referansı metodun geri dönüş değerinden elde edilebilir.
- Sınıfın static bir veri elemanı bir tanedir.
- Sınıfın static veri elemanlarının hepsi sınıfın bir elemanı ilk kez kez kullanıldığında yaratılır ve programın sonuna kadar yaşarlar.
- Sınıfın static veri elemanlarına da default değerler atanır.
- Sınıfın non-static bir elemanına sınıf dışından sınıf ismi ile erişilemez. Çünkü non-static veri elemanı her nesne için ayrıca yaratılır.
- Sınıfın static bir elemanına sınıf dışından referans ile de erişilebilir. Sınıf ismi ile erişmekten okunabilirlik hariç bir farkı yoktur.
- Sınıfın non-static bir metodu sınıf dışından referans ve nokta operatörü ile çağrılabilir
- Sınıfın non-static bir metodu sınıf dışından sınıf ismi ve noka operatörü ile çağrılamaz
- Sınıfın static bir metodu sınıf isme ve nokta operatörü ile çağrılabilir
- Sınıfın static bir metodu referans ve nokta operatörü ile de çağrılabilir. Fakat okunabilirlik açısından yapılmamalıdır
- Sınıfın non-static bir metodu içerisinde aynı sınıfın non-static bir veri elemanına doğrudan erişilebilir.
- Sınıfın non-static bir metodu içerisinde aynı sınıfın non-static metodu doğrudan çağrılabilir.
- Yukarıdaki iki maddenin özeti olarak, sınıfın non-static bir metodu içerisinde sınıfın non-static elemanlarına doğrudan erişilebilir
- Sınıfın non-static bir metodu içerisinde sınıfın static bir veri elemanına doğrudan erişilebilir
- Sınıfın non-static bir metodu içerisinde sınıfın static bir metodu doğrudan çağrılabilir
- Yukarıdaki iki maddenin özeti olarak, sınıfın non-static bir metodu içerisinde sınıfın static elemanlarına doğrudan erişilebilir
- Yukarıdaki dört maddenin özeti olarak, sınıfın non-static bir metodu içerisinde sınıfın tüm elemanlarına (non-static veya static) doğrudan erişilebilir
- Sınıfın static bir metodu içerisinde sınıfın non-static bir veri elemanına doğrudan erişilemez.
- Sınıfın static bir metodu içerisinde sınıfın non-static bir metodu doğrudan çağrılamaz.
- Yukarıdaki iki maddenin özeti olarak, sınıfın static bir metodu içerisinde sınıfın non-static elemanlarına doğrudan erişilemez
- Sınıfın static bir metodu içerisinde sınıfın static bir elemanına doğrudan erişilebilir.
- Sınıfın static bir metodu içerisinde sınıfın static bir metodu doğrudan çağrılabilir
- Yukarıdaki iki maddenin özeti olarak, sınıfın static bir metodu içerisinde sınıfın static elemanlarına doğrudan erişilebilir
- Yukarıdaki dört maddenin özeti olarak, sınıfın static bir metodu içerisinde sınıfın yalnızca static elemanlarına doğrudan erişilebilir
- Yukarıdaki sekiz maddenin özeti olarak, sınıfın non-static bir metodu içerisinde sınıfın her elemanına doğrudan erişilebilirken, static bir metodu içerisinde yalnızca static elemanlarına doğrudan erişilebilir
- Point sınıfı ve test kodu
- Point sınıfı
- Complex sınıfı ve test kodu
- Complex sınıfı
- Random sınıfı nextInt metodu
- Random sınıfı nextDouble metodu
- Random sınıfı nextLong metodu
- Random sınıfın nextBoolean metodu
- Sınıf Çalışması: Paranın yazı gelme olasılığının yaklaşık olarak 0.5 olduğunu bulan basit bir simulasyon programını yazınız
- Sınıf Çalışması: Paranın yazı gelme olasılığının yaklaşık olarak 0.5 olduğunu bulan basit bir simulasyon programını yazınız
- Sınıf Çalışması: İki zar atıldığında zarların çift gelmesi (ikisi de aynı) olasılığını yaklaşık hesaplayan basit simülasyon programını yazınız
- Tohum değeri setSeed isimli metot ile değiştirilebilir
- Homework-002-2. sorunun bir çözümü.
- Java'da nesnenin yaratılma aşamaları
- constructor (ctor) özellikleri
- ctor'un çağrılması
- ctor non-static bir metottur.
- ctor öncesinde default değerler atanmış olur.
- ctor içerisinde return kullanımı
- Point sınıfı ve test kodu
- Complex sınıfı ve test kodu
- Random sınıfının tohum değeri parametreli ctor elemanı
- Derleyici String atomu gördüğünde nasıl bir kod üretir ?
- printf metodunda s format karakteri ile bir String referansına ilişkin yazı ekrana basılabilir
- immutable sınıf nedir ?
- String sınıfının toUpperCase metodu
- String sınıfının toLowerCase metodu
- String sınıfının length isimli metodu
- String sınıfının charAt isimli metodu
- Boş String nedir ?
- Aynı türden iki referansın == ve != operatörleri ile karşılaştırılması
- Yazıların eşitlik karşılaştırması == ve != operatörleri ile yapılmaz
- Yazıların eşitlik karşılaştırması equals metodu ile yapılabilir.
- String sınıfının equalsIgnoreCase isimli metodu
- String sınıfının indexOf metodu
- String sınıfının fromIndex parametreli indexOf metodu
- String sınıfının lastIndexOf metodu
- Sınıf Çalışması: (countString isimli metodun yazılması)
- Bir string içinde boş string arama testi 1 (kötü yöntem)
- Bir string içinde boş string arama testi 2 (kötü yöntem)
- Bir string içinde boş string arama testi 3 (iyi yöntem)
- String sınıfının trim metodu
- String sınıfının concat metodu
- Yazı birleştirmesi + operatörü ile de yapılabilir
- + operatörünün operandlarından bir String türündense diğer operandının String karşlığı elde edilerek birleştirme işlemi yapılır
- Sınıf Çalışması: reverse metodunu yazınız
- Sınıf Çalışması: Basit ATM kullanıcı ve parola test uygulamasını yazınız
- String sınıfının substring metodu
- String sınıfının substring metoduna index numarası olarak yazının uzunluğu verildiğinde boş string döndürür
- Sınıf Çalışması: Quit girilene kadar aldığı yazıları - ile birleştiren programı yazınız
- String sınıfının startsWith metodu
- String sınıfının endsWith metodu
- Character sınıfının isXXX ( isWhiteSpace, isLetter, isDigit, isUpparCase, isLowerCase ) metotları
- Character sınıfının toXXX ( toUpperCase, toLowerCase )metotları
- Sınıf Çalışması: Aldığı yazının ilk karakterini büyük harf capitalize isimli metodu yazınız
- Sınıf Çalışması: Aldığı yazının sağındaki boşlukları silen trimRight ve solundaki boşlukları silen trimLeft metotlarını ayrı ayrı yazınız
- Sınıf Çalışması: Aşağıda açıklanan metotları (padLeft ve padRight) yazınız ve test ediniz
- Homework-002-2. sorunun bir çözümü.
- Aldığı yazının içindeki tüm boşlukları silen removeWhiteSpaces metodunu yazınız.
- String sınıfının compareTo metodu
- String sınıfının compareToIgnoreCase metodu
- Derleyici özdeş String atomları (string literal) için aynı adresi verir.
- Sınıf çalışması: isPangramTR ve isPangramEN isimli metodlarını yazınız (1.1).
- isPangramEN motedunun unicode-uyumlu yazılması (1.2)
- Sınıf çalışması: isPalindrom isimli motodu yazınız (2).
- Sınıf çalışması: isPalindrom isimli motodu yazınız (3).
- Sınıf çalışması: isPalindrom isimli motodu yazınız(4).
- Sınıf çalışması: getLongestPalindrome metodunu yazınız.
- Sınıf Çalışması: getRandomTextTR ve getRandomTextEN metodlarını yazınız.
- Sarmalayan sınıfların parseXXX (parseint, parse double vs.) metodları ile yazılar sayıya çevrilebilir.
- Neden nextInt, nextLong, nextDouble metotları nextLine metodu ile aynı Scanner nesnesi üzerinde kullanılmamalıdır ?
- String sınıfının valueOf metodu.
- String sınıfının contains metodu.
- Sınıf çalışması: isPangramTr ve isPangramEN metodlarını yazınız.
- String sınıfının format metodu.
- Complex sınıfı ve test kodu
- String sınıfının replace metodu.
- java 7 ile birlikte switch deyiminde String kullanımı.
- Paketler
java.lang paketi altındaki tüm sınıflar heryerden görülebilirdir.
Derleyici bildirim sırasındaki isimleri aramaz. Zaten bu bildirimdir
Bir isim programlamada iki türlü kullanılabilir: nitelikli (qualified), niteliksiz (unqualified)
Yıldızlı import bildiriminin (import on demand declaration) gerekliliği
Yıldızsız import bildiriminin (import single type declaration) genel biçimi:
Yıldızsız import bildiriminin (import single type declaration) gerekliliği
import bildiriminin yapılması sırasında hata oluşması durumu
import ile bildirilen paketlerin sınıflarının çakışması durumunda ne yapılmalıdır ?
Aşağıdaki örnekte import bildirimleri ile nitaliklendirme azaltılmıştır
Yıldızlı import static bildiriminin genel biçimi: (import static on demand declaration)
Yıldızsız import static bildiriminin genel biçimi: (import static single type declaration)
Dizi yaratılırken verilen eleman sayısı sabit ifadesi olmak zorunda değildir
[] operatörüne negatif pozitif bakımından sınırlar dışında bir değer verildiğinde exception oluşur
Bir dizi ilk yaratıldığında tüm elemanlarına default değerler atanır
Dizilere ilkdeğer verilmesi (initialization) küme parantezi ile yapılabilir.
Diziye ilkdeğer olarak verilen elemanlar sabit ifadesi olmak zorunda değildir
Bir metodun geri dönüş değerine ilişkin tür bir dizi türü olabilir
Sayısal loto kuponu üreten basit bir program (Daha iyi versiyon)
ArrayUtil sınıfının partition metodu (partition algoritması kullanılmıştır)
Sınıf çalışması: getDayOfWeek metodunu aşağıdaki kurallara göre yazınız.
Sınıf çalışması: Klavyden int türden bir n sayısı isteyiniz. n elemanlı bir String dizisi yaratınız.
split metodu ile kullanılacak ayraç(lar) [] arasında yazılmalıdır
Boş string'in diziye dahil edilmemesi için köşeli parantez konmalıdır sonuna + konmalıdır
[ ve ] karakterlerinin ayraç olarak verilebilmesi için ters bölü ile yazılması gerekir.
Homework-013 sorusuna ilişkin bir iskelet. Bunu kullanarak geliştirmeniz tavsiye edilir
Aşağıdaki m * n'lik bir matris yaratılmış ve elemanlarına rasgele değerler atanmıştır
Dizi dizileri de metotlara geçirilebilir, dizi dizisi (referansı) döndüren metotlar da yazılabilir
Sınıf Çalışması: isMatrix ve isSquareMatrix metodlarını yazınız
Sınıf Çalışması: addMtrices isimli metodu ArrayUtil sınıfı içerisinde yazınız ve test ediniz.
Sınıf Çalışması: Şubelere göre matematik sınav sonuçlarını bulup yazdıran programı yazınız
for-each döngü deyiminde döngü değişkenine atama işlemi dorğudan yapılır.
for-each döngü deyiminde döngü değişkenini alanı döngü boyunca görülebilirdir
for-each döngü deyiminde : den sonraki kısım bir kez yapılır
for-each döngü deyiminde döngü değişkenine atama yapılabilir. Bu çok işe yarar bir işlem değildir.
for-each döngü deyimi kullanımı kolaylaştırdığı her yerde kullanılmalıdır.
Sınıfın elemanlarının erişim belirleyicileri: (Java Modifiers)
Sınıfın no-modifier bölümü farklı paketteki diğer sınıflar için private anlamındadır
Sınıfın protected bölümü aynı paketteki diğer sınıflar için public anlamındadır (friendly, internal)
Erişim Belirleyicileri erişim tablosu (modifiers access table)
Programlama da private elemanlara yönelik bazı isimlendirme teknikleri
Bir sınıfın veri elemanlarına yönelik set metotları (setters) ve get metotlarının(getters) yazılması
veri elemanlarının gizlenmesi ve client kodun bu değişiklikten etkilenmemesi
Singleton kalıbının bir implementasyonu (lazy implementation)
Singleton kalıbının bir implementasyonu (lazy implementation) (2)
final yerel değişkenlere faaliyet alanı boyunca bir kez atama yapılabilir.
Bir metodun parametre değişkeni final olarak bildirilebilir.
final yerel değişkenlere faaliyet alanı boyunca bir kez atama yapılabilir.
Bir metodun parametre değişkeni final olarak bildirilebilir.
final ve non-static olarak bildirilen veri elemanlarına default değer atanmaz!
non-static final veri elemanlarına bildirim sırasında değer atanabilir
Bildirim sırasında atanan değerin sabit ifadesi olması gerekmez
non-static final elemanlara ctor içerisinde değer atanabilir.
non-static final elemanlara değer ctor dışında atanmamışsa tüm ctor'larda atama yapılmalıdır!
Sınıfın static ve final olarak bildirilmiş veri elemanlarına da default değer atanmaz.
Singleton kalıbının bir implementasyonu (eager implementation)
Bir referansın final olması o referansa atama yapılamayacağı anlamına gelir.
enum anahtar sözcüğü ile bir enum türü (enum class) bildirilebilir.
enum türünden nesne new operatörü ile hiç bir yerde (enum içinde bile) yaratılamaz!
enum türüne sabitler dışında metot, veri elemanı ve ctor gibi elemanlar da eklenebilir.
enum sınıfına eklenen ctor elemanı ve her bir sabite iliştirilen bilgi!
enum sınıfına eklenen ctor elemanı ve her bir sabite iliştirilen bilgi!
enum sınıfına eklenen ctor elemanına göre nesne yaratılması durumu
enum türlerinde eşitlik karşılaştırması equals isimli metot ile yapılabilir