Lexical scoping
Lexical scoping is also referred to as Static scoping. As per lexical scoping, a variable will be accessible in the scope in which it is defined. Here, the scope of the variable is determined at compile time.
Let us consider the following example:
public class LexicalScoping {
int a = 1;
// a has class level scope. So It will be available to be accessed
// throughout the class
public void sumAndPrint() {
int b = 1;
int c = a + b;
// b and c are local variables of method. These will be accessible
// inside the method only
}
// b and c are no longer accessible
} Variable a will be available throughout the class (let's not consider the difference of static and non-static as of now). However, variables b and c will be available inside the sumAndPrint method only.
Similarly, a variable given inside lambda expressions are accessible only to that Lambda. For example:
list.stream().map(n -> n*2 );
Here n is lexically scoped to...