1
+ ### Sınıf Çalışması: Doğum günü kutlaması
1
2
``` java
2
3
/* ----------------------------------------------------------------------------------------------------------------------
3
4
Sınıf Çalışması: Klavyeden alınan gün, ay ve yıl bilgilerine göre kişinin doğum günü geçmişse
@@ -672,6 +673,7 @@ public enum Month {
672
673
JAN , FEB , MAR , APR , MAY , JUN , JUL , AUG , SEP , OCT , NOV , DEC
673
674
}
674
675
```
676
+ ### LocalDate sınıfının of metotları
675
677
``` java
676
678
/* ----------------------------------------------------------------------------------------------------------------------
677
679
LocalDate sınıfının of metotları
@@ -692,6 +694,7 @@ class App {
692
694
}
693
695
}
694
696
```
697
+ ### LocalDate sınıfının Month parametreli ctor elemanı
695
698
``` java
696
699
/* ----------------------------------------------------------------------------------------------------------------------
697
700
LocalDate sınıfının Month parametreli ctor elemanı
@@ -713,6 +716,7 @@ class App {
713
716
}
714
717
}
715
718
```
719
+ ### LocalDate sınıfı (ve tüm diğer Java 8 tarih-zaman sınıfları) geçerlilik kontrolü yapar.
716
720
``` java
717
721
/* ----------------------------------------------------------------------------------------------------------------------
718
722
LocalDate sınıfı (ve tüm diğer Java 8 tarih-zaman sınıfları) geçerlilik kontrolü yapar. Bu sınıflar geçerli olmayan
@@ -735,6 +739,7 @@ class App {
735
739
}
736
740
}
737
741
```
742
+ ### LocalDate sınıfının now iismli static metodu sistemin tarih bilgisini elde etmekte kullanılır
738
743
``` java
739
744
/* ----------------------------------------------------------------------------------------------------------------------
740
745
LocalDate sınıfının now iismli static metodu sistemin tarih bilgisini elde etmekte kullanılır
@@ -755,6 +760,7 @@ class App {
755
760
}
756
761
}
757
762
```
763
+ ### LocalDate sınıfının isAfter ve isBefore metotları
758
764
``` java
759
765
/* ----------------------------------------------------------------------------------------------------------------------
760
766
LocalDate sınıfının isAfter ve isBefore metotları
@@ -777,6 +783,7 @@ class App {
777
783
}
778
784
}
779
785
```
786
+ ### ChronoUnit enum sınıfı ile tarih-zaman ölçümleri yapılabilir
780
787
``` java
781
788
/* ----------------------------------------------------------------------------------------------------------------------
782
789
ChronoUnit enum sınıfı ile tarih-zaman ölçümleri yapılabilir
@@ -801,6 +808,7 @@ class App {
801
808
}
802
809
}
803
810
```
811
+ ### Sınıf Çalışması: Doğum günü kutlaması (2)
804
812
``` java
805
813
/* ----------------------------------------------------------------------------------------------------------------------
806
814
Sınıf Çalışması: Klavyeden alınan gün, ay ve yıl bilgilerine göre kişinin doğum günü geçmişse
@@ -908,6 +916,7 @@ class BirthDateInfo {
908
916
}
909
917
}
910
918
```
919
+ ### LocalDate sıfınının plusXXX metotları
911
920
``` java
912
921
/* ----------------------------------------------------------------------------------------------------------------------
913
922
LocalDate sıfınının plusXXX metotları
@@ -929,6 +938,7 @@ class App {
929
938
}
930
939
}
931
940
```
941
+ ### LocalDate sıfınının metotları ile zincir çağırma yapılabilir
932
942
``` java
933
943
/* ----------------------------------------------------------------------------------------------------------------------
934
944
LocalDate sıfınının metotları ile zincir çağırma yapılabilir
@@ -950,6 +960,7 @@ class App {
950
960
}
951
961
}
952
962
```
963
+ ### LocalTime sınıfının atDate metodu
953
964
``` java
954
965
/* ----------------------------------------------------------------------------------------------------------------------
955
966
LocalTime sınıfının atDate metodu
@@ -972,6 +983,7 @@ class App {
972
983
}
973
984
}
974
985
```
986
+ ### LocalDate sınıfının atTime metodu
975
987
``` java
976
988
/* ----------------------------------------------------------------------------------------------------------------------
977
989
LocalDate sınıfının atTime metodu
@@ -995,6 +1007,7 @@ class App {
995
1007
}
996
1008
}
997
1009
```
1010
+ ### Sınıf Çalışması
998
1011
``` java
999
1012
/* ----------------------------------------------------------------------------------------------------------------------
1000
1013
Sınıf Çalışması: 17.08.1999 tarihinde 03:02:00 zamanında gerçekleşmiş olan büyük depremden bu zamana kadar geçen
@@ -1036,6 +1049,7 @@ public final class BigEarthquakeRemainderApp {
1036
1049
}
1037
1050
}
1038
1051
```
1052
+ ### LocalDateTime sınıfının toLocalDate ve toLocalTime sınıfları
1039
1053
``` java
1040
1054
/* ----------------------------------------------------------------------------------------------------------------------
1041
1055
LocalDateTime sınıfının toLocalDate ve toLocalTime sınıfları
@@ -1059,6 +1073,7 @@ class App {
1059
1073
}
1060
1074
}
1061
1075
```
1076
+ ### DateTimeUtil sınıfı ve test kodu
1062
1077
``` java
1063
1078
/* ----------------------------------------------------------------------------------------------------------------------
1064
1079
DateTimeUtil sınıfı ve test kodu
@@ -1131,6 +1146,7 @@ public final class DateTimeUtil {
1131
1146
}
1132
1147
}
1133
1148
```
1149
+ ### Java'da içiçe tür bildirimleri (nested types):
1134
1150
``` java
1135
1151
/* ----------------------------------------------------------------------------------------------------------------------
1136
1152
Java'da içiçe tür bildirimleri (nested types):
@@ -1145,11 +1161,13 @@ public final class DateTimeUtil {
1145
1161
yapılabilmesini sağlayan "Lambda ifadeleri ve metot referansları" konusu ileride detaylı olarak ele alınacaktır
1146
1162
----------------------------------------------------------------------------------------------------------------------*/
1147
1163
```
1164
+ ### Hiç bir tür içerisinde bulunmayan bir sınıfa "top-level class" denir
1148
1165
``` java
1149
1166
/* ----------------------------------------------------------------------------------------------------------------------
1150
1167
Hiç bir tür içerisinde bulunmayan bir sınıfa "top-level class" denir
1151
1168
----------------------------------------------------------------------------------------------------------------------*/
1152
1169
```
1170
+ ### Top-level class'lar static olarak bildirilemez
1153
1171
``` java
1154
1172
/* ----------------------------------------------------------------------------------------------------------------------
1155
1173
Top-level class'lar static olarak bildirilemez
@@ -1159,6 +1177,7 @@ static class Sample { //error
1159
1177
}
1160
1178
1161
1179
```
1180
+ ### Bir sınıf içerisinde başka bir sınıf static olarak bildirilebilir.
1162
1181
``` java
1163
1182
/* ----------------------------------------------------------------------------------------------------------------------
1164
1183
Bir sınıf içerisinde başka bir sınıf static olarak bildirilebilir. Bu durumda içteki sınıf dıştaki sınıfın bir
@@ -1186,6 +1205,7 @@ class A {
1186
1205
}
1187
1206
}
1188
1207
```
1208
+ ### static sınıfların da elemanları olabilir.
1189
1209
``` java
1190
1210
/* ----------------------------------------------------------------------------------------------------------------------
1191
1211
static sınıfların da elemanları olabilir. static bir sınıfa sınıf dışından onu kapsayan sınıf ismi ve nokta
@@ -1222,6 +1242,7 @@ class A {
1222
1242
1223
1243
}
1224
1244
```
1245
+ ### static sınıflar static elemanlar olduğundan import static bildirimi ile isimleri doğrudan kullanılabilir.
1225
1246
``` java
1226
1247
/* ----------------------------------------------------------------------------------------------------------------------
1227
1248
static sınıflar static elemanlar olduğundan import static bildirimi ile isimleri doğrudan kullanılabilir.
@@ -1258,6 +1279,7 @@ class A {
1258
1279
}
1259
1280
}
1260
1281
```
1282
+ ### Kapsayan sınıfta static sınıfın elemanlarına erişilebilir
1261
1283
``` java
1262
1284
/* ----------------------------------------------------------------------------------------------------------------------
1263
1285
Kapsayan sınıfta static sınıfın elemanlarına erişilebilir
@@ -1299,6 +1321,7 @@ class A {
1299
1321
}
1300
1322
}
1301
1323
```
1324
+ ### Kapsayan sınıfta static sınıfın private elemanlarına da erişilebilir
1302
1325
``` java
1303
1326
/* ----------------------------------------------------------------------------------------------------------------------
1304
1327
Kapsayan sınıfta static sınıfın private elemanlarına da erişilebilir
@@ -1340,6 +1363,7 @@ class A {
1340
1363
}
1341
1364
}
1342
1365
```
1366
+ ### static sınıf kapsayan sınıfın private elemanlarına erişebilir
1343
1367
``` java
1344
1368
/* ----------------------------------------------------------------------------------------------------------------------
1345
1369
static sınıf kapsayan sınıfın private elemanlarına erişebilir
@@ -1385,6 +1409,7 @@ class A {
1385
1409
}
1386
1410
}
1387
1411
```
1412
+ ### Aşağıdaki durumda B sınıfının foo metodu kendisini çağırdığından exception oluşur
1388
1413
``` java
1389
1414
/* ----------------------------------------------------------------------------------------------------------------------
1390
1415
Aşağıdaki durumda B sınıfının foo metodu kendisini çağırdığından exception oluşur
@@ -1415,6 +1440,7 @@ class A {
1415
1440
}
1416
1441
}
1417
1442
```
1443
+ ### Yukarıdaki problem aşağıdaki gibi çözülebilir
1418
1444
``` java
1419
1445
/* ----------------------------------------------------------------------------------------------------------------------
1420
1446
Yukarıdaki problem aşağıdaki gibi çözülebilir
@@ -1445,6 +1471,7 @@ class A {
1445
1471
}
1446
1472
}
1447
1473
```
1474
+ ### Aşağıdaki bar çağrısı doğrudan yapılmıştır.
1448
1475
``` java
1449
1476
/* ----------------------------------------------------------------------------------------------------------------------
1450
1477
Aşağıdaki bar çağrısı doğrudan yapılmıştır. Bu durumda bar ismi B sınıfında bulunmadığından onu kapsayan A sınıfına
@@ -1476,6 +1503,7 @@ class A {
1476
1503
}
1477
1504
}
1478
1505
```
1506
+ ### Android programalamada kullanılan meşhur R sınıfı
1479
1507
``` java
1480
1508
/* ----------------------------------------------------------------------------------------------------------------------
1481
1509
Android programalamada kullanılan meşhur R sınıfı, içerisinde static bildirilmiş sınıflar olacak şekilde
@@ -1545,6 +1573,7 @@ class R {
1545
1573
// ...
1546
1574
}
1547
1575
```
1576
+ ### Bir sınıf içerisinde non-static bildirilmiş bir sınıf olabilir (inner class)
1548
1577
``` java
1549
1578
/* ----------------------------------------------------------------------------------------------------------------------
1550
1579
Bir sınıf içerisinde non-static bildirilmiş bir sınıf olabilir (inner class)
@@ -1557,6 +1586,7 @@ class A {
1557
1586
}
1558
1587
}
1559
1588
```
1589
+ ### inner class'ın static elemanları olamaz
1560
1590
``` java
1561
1591
/* ----------------------------------------------------------------------------------------------------------------------
1562
1592
inner class'ın static elemanları olamaz
@@ -1571,6 +1601,7 @@ class A {
1571
1601
}
1572
1602
}
1573
1603
```
1604
+ ### inner class türünden bir nesne kapsadığı sınıf dışında referans.new sentaksı ile yaratılabilir.
1574
1605
``` java
1575
1606
/* ----------------------------------------------------------------------------------------------------------------------
1576
1607
inner class türünden bir nesne kapsadığı sınıf dışında <referans>.new sentaksı ile yaratılabilir. Yani bir inner class
@@ -1602,6 +1633,7 @@ class A {
1602
1633
}
1603
1634
}
1604
1635
```
1636
+ ### non-static bildirilmiş bir sınıf içerisinde o nesnenin ilişkin olduğu kapsayan sınıf nesnesinin non-static veri elemanlarına doğrudan erişilebilir
1605
1637
``` java
1606
1638
/* ----------------------------------------------------------------------------------------------------------------------
1607
1639
non-static bildirilmiş bir sınıf içerisinde o nesnenin ilişkin olduğu kapsayan sınıf nesnesinin non-static veri
@@ -1640,6 +1672,7 @@ class A {
1640
1672
}
1641
1673
}
1642
1674
```
1675
+ ### Anahtar Notlar: static ve non-static sınıflar için derleyici ürettiği arakod isimlendirmesinde kapsayan sınıf ismini de dahil eder.
1643
1676
``` java
1644
1677
/* ----------------------------------------------------------------------------------------------------------------------
1645
1678
Anahtar Notlar: static ve non-static sınıflar için derleyici ürettiği arakod isimlendirmesinde kapsayan sınıf
@@ -1653,6 +1686,7 @@ class A {
1653
1686
bildirimi için B ister static ister non-static olsun, B'nin byte kodu A$B.class dosyası biçiminde yaratılır
1654
1687
----------------------------------------------------------------------------------------------------------------------*/
1655
1688
```
1689
+ ### inner class içerisinde A nın static metotları da doğrudan çağrılabilir
1656
1690
``` java
1657
1691
/* ----------------------------------------------------------------------------------------------------------------------
1658
1692
inner class içerisinde A nın static metotları da doğrudan çağrılabilir
@@ -1683,6 +1717,7 @@ class A {
1683
1717
}
1684
1718
}
1685
1719
```
1720
+ ### Aşağıdaki örnekte B'nin foo metodu içerisinde kendisini çağırmaması için A sınıfının foo metodu çağrısında sınıf ismi kullanılmıştır
1686
1721
``` java
1687
1722
/* ----------------------------------------------------------------------------------------------------------------------
1688
1723
Aşağıdaki örnekte B'nin foo metodu içerisinde kendisini çağırmaması için A sınıfının foo metodu
@@ -1714,6 +1749,7 @@ class A {
1714
1749
}
1715
1750
}
1716
1751
```
1752
+ ### Tekrar: "non-static bir metoda metodu çağırmakta kullanılan referans gizlice geçirilir"
1717
1753
``` java
1718
1754
/* ----------------------------------------------------------------------------------------------------------------------
1719
1755
Tekrar: Arakod düzeyinde non-stati metot kavramı doğrudan yoktur. Tüm metotlar static metotlara dönüştürülür.
@@ -1755,6 +1791,7 @@ class Sample {
1755
1791
}
1756
1792
}
1757
1793
```
1794
+ ### Tekrar: İşte yukarıda belirtilen gizlice geçirilen adrese non-static metot içerisinde this referansı ile erişilebilir
1758
1795
``` java
1759
1796
/* ----------------------------------------------------------------------------------------------------------------------
1760
1797
Tekrar: İşte yukarıda belirtilen gizlice geçirilen adrese non-static metot içerisinde this referansı ile
@@ -1785,6 +1822,7 @@ class Sample {
1785
1822
}
1786
1823
}
1787
1824
```
1825
+ ### Tekrar: this referansını okunabilirliği bozmamak kaydıyla non-static metot çağrılarında kullanılmalıdır.
1788
1826
``` java
1789
1827
/* ----------------------------------------------------------------------------------------------------------------------
1790
1828
Tekrar: this referansını okunabilirliği bozmamak kaydıyla non-static metot çağrılarında kullanılmalıdır. Bu durumda
@@ -1821,6 +1859,7 @@ class Sample {
1821
1859
}
1822
1860
}
1823
1861
```
1862
+ ### Tekrar: Aşağıdaki durumda this referansı kullanımı zorunludur
1824
1863
``` java
1825
1864
/* ----------------------------------------------------------------------------------------------------------------------
1826
1865
Tekrar: Aşağıdaki durumda this referansı kullanımı zorunludur
@@ -1848,6 +1887,7 @@ class Point {
1848
1887
}
1849
1888
}
1850
1889
```
1890
+ ### Aşağıdaki örnekte foo metodunun içerisinde this referansı B sınıfı türünden olduğundan error oluşur
1851
1891
``` java
1852
1892
/* ----------------------------------------------------------------------------------------------------------------------
1853
1893
Aşağıdaki örnekte foo metodunun içerisinde this referansı B sınıfı türünden olduğundan error oluşur
@@ -1877,6 +1917,7 @@ class A {
1877
1917
}
1878
1918
}
1879
1919
```
1920
+ ### Yukarıdaki durumdan dolayı aşağıdaki çağırmada exception oluşur (StackOverflowException)
1880
1921
``` java
1881
1922
/* ----------------------------------------------------------------------------------------------------------------------
1882
1923
Yukarıdaki durumdan dolayı aşağıdaki çağırmada exception oluşur (StackOverflowException)
@@ -1909,6 +1950,7 @@ class A {
1909
1950
}
1910
1951
}
1911
1952
```
1953
+ ### this expression'ın genel biçimi
1912
1954
``` java
1913
1955
/* ----------------------------------------------------------------------------------------------------------------------
1914
1956
this expression'ın genel biçimi
@@ -1948,6 +1990,7 @@ class A {
1948
1990
}
1949
1991
}
1950
1992
```
1993
+ ### Aşağıdaki örnekte makeText metoduna foo içerisinde ilgili B nesnesinin yaratılmasında kullanılan A nesnesinin referansının geçirilmesi gerektiğinden this expression kullanılmalıdır
1951
1994
``` java
1952
1995
/* ----------------------------------------------------------------------------------------------------------------------
1953
1996
Aşağıdaki örnekte makeText metoduna foo içerisinde ilgili B nesnesinin yaratılmasında kullanılan A nesnesinin
@@ -1979,6 +2022,7 @@ class A {
1979
2022
}
1980
2023
}
1981
2024
```
2025
+ ### Aşağıdaki örnekte bellek sızıntısı (memory leak) oluşur.
1982
2026
``` java
1983
2027
/* ----------------------------------------------------------------------------------------------------------------------
1984
2028
Aşağıdaki örnekte bellek sızıntısı (memory leak) oluşur. İleride böyle bir senaryoda bellek sızıntısı durumunun
0 commit comments