*FIGURE 1. The structure of a basic for statement
Göründüyü kimi for
ifadəsi 3 hissədən ibarətdir:
- initialization;
- booleanExpression;
- updateStatement.
1-ci və 3-cü hissə bir və ya bir neçə ifadədən (multiple statements) ibarət ola bilər və bu zaman həmin ifadələr bir-birindən vergül ilə ayrılır.
Əgər dəyişən initalization blokda (1-ci hissə) elan edilibsə, həmin dəyişənə ancaq for
dövrünün içində müraciət edilə bilər. Əgər dəyişən for
dövründən əvvəl elan edilib, initalization blokda dəyər mənimsədilibsə, həmin dəyişənə for
dövründən kənarda da müraciət edilə bilər.
Yuxarıda icra olunma ardıcıllığı qeyd olunub, updateStatement ++a
yaxud a++
olmasından asılı olmayaraq body hissə icra olunduqdan sonra icra olunur.
İmtahanda rastlaşa biləcəyimiz nümunlər:
1. Creating an İnfinite Loop
for( ; ; ) { System.out.println("This is infinite loop"); } System.out.println("This line is unreachable because of infinite loop"); // does not compile
Nümunədən də göründüyü kimi for
dövrünün bütün komponentləri optional`dı. for(;)
və for()
şəklində yazılsa compile error verəcək. Bundan əlavə sonsuz dövrdən sonra gələn bütün ifadələr də compile error verir.
2. Adding Multiple Terms to the for Statement
int x = 0; for(long y = 0, z = 4; x < 5 && y < 10; x++, y++) { System.out.print(y + " "); } System.out.println(x);
3. Redeclaring a Variable in the Initalization Block
int x = 0; for(long y = 0, x = 4; x < 5 && y < 10; x++, y++) { // does not compile System.out.println(x + " "); }
Aşağıdakı formada yazsaq compile olunacaq:
int x = 0; long y = 10; for(y = 0, x = 4; x < 5 && y < 10; x++, y++) { System.out.println(x+" "); }
4. Using Incompatible Data Types in the Initialization Block
for(long y=0, int x=4; x<5 && y<10; x++,y++) { // does not compile System.out.println(x + " "); }
Initalization blokda elan olunan dəyişənlər hamısı eyni tipdə olmalıdır.
5. Using Loop Variables Outside the Loop
for(long y=0, x=4; x<5 && y<10; x++,y++) { System.out.println(y + " "); } System.out.println(x); // does not compile
for
dövrünün 3-cü hissəsində (update part) hər ifadəni yazmağa icazə verilmir. Ancaq aşağıdakı ifadələri istifadə etmək mümkündür:
- Assignment;
- PreIncrementExpression;
- PreDecrementExpression;
- PostIncrementExpression;
- PostDecrementExpression;
- MethodInvocation;
- ClassInstanceCreationExpression.
Nümunələrə baxaq:
for( ; Math.random()<.07; ) { } for( ; ; Math.random()<.07) { } // does NOT compile for( ; ; Math.random()) { }
[topics lang=az]