Question: As we use "default" keyword as a access specifier, and it can be used in switch statements as well with complete different purpose, So i was curious that is there any other keywords in java which can be used in more then one purposes

Answer: 
The "default" in the case of access modifier isn't a keyword - you don't write:  

`default void doSomething()`

However, when specifying the default value of an attribute of annotations - it is.

```
switch (a) {
   default: something();
}

```

and 

```
public @interface MyAnnotation {
    boolean bool() default true;
}

```

That, together with `final` as pointed out by Jon Skeet seems to cover everything. Perhaps except the "overloaded" `for` keyword:

`for (initializer; condition; step)` and `for (Type element : collection)`
*final* has different uses:

* in a variable declaration it means a variable can't be changed.
* In a method signature it means a method can't be overridden
* In a parameter list it means a variable can't be altered in a method.