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 `static` keyword associates methods and fields with a class instead of instances of that class, but it's also used to signify static initialization sections as in:

```
public class MyClass
{
   private static int a;

   static
   {
      a = 1;
   }

   public static void doSomethingCool()
   {
      ...
   }
}

```

Pascal's comment reminded me of static imports:

```
import static MyClass.doSomethingCool;

public class MyOtherClass
{
   public void foo()
   {
      // Use the static method from MyClass
      doSomethingCool();
   }
}

```
As all the other answers have stated, there are many keywords that server multiple purposes depending on context. I just wanted to add that there is a reason for this: There is a strong aversion to adding keywords because such additions break existing code, so when new features are added existing keywords are used if they make a reasonable fit, such as super and extends for generics and default for annotations, or they are just skipped as in the colon used in the enhanced for loop.

So my point is to expect that as the language continues to evolve even more uses are found for existing keywords rather than introducing new ones.