OCA Java imtahan mövzuları

The for-each statement

*FIGURE 1. The structure of an enhancement for statement

forEach-statement-in-java

Sağ tərəf (collection) massiv tipində və ya java.lang.Iterable interface`indən implements olunmuş classlar (xüsusilə Java Collections) olmalıdır. Sol tərəf (instance) isə sağ tərəfdəki collection`un tipində olan dəyişən. Məsələn;

  • collection ⇒ String [] arr,  ArrayList<Integer> list;
    instance   ⇒  String s,  Integer i.

for dövründən fərqli olaraq forEach dövründə instance dəyişəni dövrdən əvvəl təyin etmək olmur, ancaq içəridə elan olunmalıdır.

final String[] names = new String[3];
names[0] = "Murad";
names[1] = "İlkin";
names[2] = "Elmar";

for(String name: names){
    System.out.print(name + ", ");   // Murad, İlkin, Elmar,
}

String name2;
for (name2 : names) {   // does not compile, identifier expected
    System.out.println(name2); 
}

names = new String[5];    // does not compile, because of final

 

for forEach qarşılaşdırması:

String[] names = {"Ceyhun", "Elnur", "Hasil", "Adil"};
List<Integer> values = (List<Integer>) Arrays.asList(new Integer[]{6, 5, 4});

for (String name : names) {
    System.out.print(name + ", ");
}
for (int i = 0; i < names.length; i++) {
    String name = names[i];
    System.out.print(name + ", ");
}

for (int value : values) {
    System.out.print(value + " ");
}
for (java.util.Iterator<Integer> i = values.iterator(); i.hasNext(); ) {
    int value = i.next();
    System.out.print(value + " ");
}

java.util.Iterator class`ı istifadə edildikdə updateStatement bölməsinə ehtiyac yoxdu.

 

Digər nümunələr:

Integer[] i = new Integer[3];

for (int i: i) {       // does not compile, eyni dəyişən adına görə
    System.out.println(i);
}

for (int a: i) {       // does compile, but throw NullPointerException
    System.out.println(a);
}

for (Integer a: i) {   // does compile and output: null null null
    System.out.print(a + " ");
}

 

forEach massiv və ya Collection tipində dəyərlər (başqa sözlə java.lang.Iterable interfeysini implements etmiş obyektlər) qəbul edir. Map`ı forEach dövründə birbaşa istifadə etmək mümkün deyil, çünki Map Iterable interfeysinin varisi deyil. Amma Map`ın keySet() və ya values() metodlarından istifadə etməklə onu forEach dövründə işlətmək olar, çünki bu metodlar geriyə Collection qaytarır.

Modifier`lərdən ancaq final açar sözü forEach dövründə istifadə edilə bilər.

String[] banks = {"CBAR", "IBAR", "Unibank"};
for(final String s: banks){}

 

[topics lang=az]

 

 “OCA: Oracle Certified Associate Java SE 8 Programmer I Study Guide: Exam 1Z0-808”, by J.Boyarsky & S.Selikoff

About the author

Mushfiq Mammadov

Leave a Comment


The reCAPTCHA verification period has expired. Please reload the page.

 

This site uses Akismet to reduce spam. Learn how your comment data is processed.