Bu döngünün basit örneklerini daha önce görmüştük. Şimdi ayrıntılı inceleyelim.
2 farklı for döngüsü vardır. İlk for döngüsü, Java’nın ilk versiyonundan beri var olan geleneksel tarzdaki for döngüsüdür. Diğeri ise JDK 5 ile eklenen for-each döngüsüdür.
Geleneksel for döngüsünün yapısı şu şekildedir:
for ( [döngü başlangıcı] ; [döngü koşulu] ; [döngü adımı] )
{
[döngüye girecek kodlar]
}
for döngüsü şu şekilde işler: İlk olarak döngüde sayaç işlevi görecek bir değişken oluşturulur. Bu değişkenin ilk değeri [döngü başlangıcı] ile belirtilen kısımda verilir. Bu değişken [döngü adımı] kısmında isteğe göre artırılır veya azaltılır. Döngünün hangi koşulda çalışacağı ise [döngü koşulu] kısmında boolean bir ifadeyle belirtilir. Aşağıdaki örneği inceleyelim:
for (int i = 1; i < 10; i++)
{
System.out.println(i);
}
Bu örnekte int türünde i isminde bir döngü sayacı oluşturulur. Bu sayaç, döngünün her adımında i++ ifadesiyle 1 artırılır. Bu döngü i sayacının değeri 10’dan küçük olduğu sürece çalışır. Bu döngü çalıştırıldığı zaman çıktısı aşağıdaki gibi olur:
1
2
3
4
5
6
7
8
9
for döngüsünün içindeki 3 kısmın çalıştırılma sırası şu şekildedir:
- İlk olarak [döngü başlangıcı] kısmı çalışır. Bu kısım sadece bir kez çalıştırılır, döngü boyunca bir daha çalıştırılmaz.
- Daha sonra [döngü koşulu] kısmı çalıştırılır. Eğer sonuç true ise döngüye girer. Bu kısım her döngünün başında tekrar kontrol edilir. Eğer sonuç false ise döngü sonlandırılır.
- Her döngünün sonunda [döngü adımı] kısmı çalıştırılır. Döngüde en son çalışan kısım burasıdır.
Şunu da belirtmek gerekir ki, [döngü başlangıcı] kısmında oluşturulan değişkenin kapsamı for döngüsüyle sınırlıdır. Bu değişkene for döngüsü dışında ulaşılamaz.
Geleneksel for döngüsünün farklı varyasyonları olabilir. Döngünün içinde 3 farklı kısım olduğundan bahsetmiştik. Bu kısımların hiçbiri zorunlu değildir. Aşağıdaki örnekleri inceleyelim:
int i = 1;
for ( ; i < 10; i++)
{
System.out.println(i);
}
Bu örnekte döngü sayacı, for döngüsünden önce oluşturulmuştur. Ayrıca [döngü başlangıcı] kısmının boş bırakıldığına dikkatinizi çekerim. Bu durumda döngü sayacı olarak döngünün dışında oluşturulan bir değişken kullanılır, ilk değeri de yine döngüden önce verilmiştir. Şunu da belirtelim ki, for döngüsünü bu örnekte olduğu gibi kullanırsanız, döngü sayacına for döngüsünden sonra da erişebilirsiniz.
int i = 1;
for ( ; i < 10; )
{
System.out.println(i);
i++;
}
Bu örnekte ise hem [döngü başlangıcı] kısmının hem de [döngü adımı] kısmının boş bırakıldığını görüyoruz. Döngü sayacını parantez içinde artırmak yerine, döngü kodlarının içinde artırıyoruz.
for ( ; ; )
{
// sonsuz döngü
}
Bu örnekte ise bütün kısımların boş bırakıldığını görüyoruz. Bu tarz for döngüleri sonsuz döngü oluşturur. Sonsuz döngü, hiçbir koşulda sona ermeyen döngü demektir. Bu döngüde hiçbir koşul test edilmediği için döngü her zaman çalışır. Yani, eğer bu kodu çalıştırırsanız, bilgisayarınız sonsuza kadar bu döngüyü işletecektir.