Yavuz Melih Özgüven

Java Interview Questions

Learn the java

Java Interview Questions
interface  Operationable {
     int  calculate ( int  x , int  y );
}

public  static  void main ( String [] args) {
    Operationable operation = (x, y) - > x + y;     
    int result = operation.calculate ( 10 , 20 );
    System.out.println (result); // 30
}


Aslında lambda ifadeleri Java’da daha önce kullanılan anonim sınıfların kısa bir şeklidir.

  1. Ertelenmiş yürütme lambda ifadeleri - programın bir yerinde herhangi bir kez tanımlanır, gerekirse herhangi bir sayıda ve programın herhangi bir yerinde çağrılır.
  2. Lambda ifadesinin parametreleri, tür olarak fonksiyonel interface metotlarının parametrelerine karşılık gelmelidir:
operation = ( int x, int y) - > x + y;
// Lambda ifadesi kendi başına yazıldığında parametre tipi belirtilemez:
(x, y) - > x + y;
// Eğer metot herhangi bir parametreyi kabul etmezse boş parantezler yazılır, örneğin:
() - >  30  +  20 ;
// Eğer metot sadece bir parametreyi kabul ederse, parantezler kullanılmayabilir:
n - > n * n;

\

  1. Sondaki lambda ifadelerinin herhangi bir değer döndürmesi gerekmez.
interface  Printable {
     void  print( String  s );
}

public  static  void main ( String [] args) {
    Printable printer = s - >  System.out.println(s);
    printer.print("Hello, world");
}


Operationable operation = ( int x, int y) - > {       
    if (y ==  0 ) {
        return  0 ;
    }
    else {
        return x / y;
    }
};

\

  1. Metot parametresi olarak lambda ifadesi kullanma
interface  Condition {
     boolean  isAppropriate ( int  n );
}

private  static  int sum ( int [] numbers, Condition condition) {
     int result =  0 ;
    for ( int i : numbers) {
         if (condition.isAppropriate(i)) {
            result + = i;
        }
    }
    return result;
}

public  static  void main ( String [] args) {
     System.out.println(sum ( new  int [] { 0 , 1 , 0 , 3 , 0 , 5 , 0 , 7 , 0 , 9 }, (n) - > n ! =  0 ));
}


Fonksiyonel interfacelerin default metotlarına lambda ifadesi içinde erişilmesine izin verilmez.

public  static  List < String > sort ( List < String > list) {
    Collections.sort(list, (a, b) -> a.compareTo(b));
    return list;
}