1) Konsol abstrakt bir sey, kafanda net bir sey olusmamasi normal. Java object oriented oldugu icin aslinda konsolu en iyi anlayabilecegin dillerden birisi.
System -> out -> println ; Sistemin -> out stream'ine -> bunu yaz gibi bir anlami var.
Konsolun tam olarak neye tekabul edecegi programini nasil calistirdiginla alakali ( System -> out her zaman ayni yere yazmaz , JVM e baglidir bu ).
Windows'da CMD uzerinde calisirsan Java programini System->out CMD'ye yazar.
Browser uzerinde calistirirsan browser console' una yazar. ( System -> out = Browser konsoludur bu durumda )
Linux sistemlerde nohup vs kullanarak fork ettiysen programini nohup ciktisi System.out olur, oraya yazar.
Java'nin kalabalik bir dil oldugunu soyleyerek elestirenler ( verbose ) , buna cozum olarak Java'daki temel abstraction'lari basit komutlarin arkasina gizlerler. Ornegin System.out.println() yerine yalnizca print() yazarsin( Python, R, Kotlin ). JS'de console.log() , yazarsin ornegin. Hangisinin daha iyi oldugu kisiden kisiye degisir.
OO paradigmasinin guzelligi senin kodunu hic degistirmeden arka planda bu islerin donmesi, buna abstraction denilir. Bunun sayesinde esnek yapilar kurabilirsin.
Abstraction (computer science) - Wikipedia
2,3) Hepsini loglara verdigin degiskenlerle yapiyorsun.
log.info("Hede hodoye {} gonderdi", Lira(657))
Seklinde.
Ayrica bu kadar basit degil, bankacilik duzenleme bilmemnesi olarak her bilgiyi her loga yazamazsin. ( Anne kizlik soy adi, sifre, kredi karti vs ). Bunun icin ozel loglar var. Ama cok kafa karistirmak istemiyorum : )