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