this is may be the dumbest question ever asked in stack overflow but this is bothering me lot...

```
 public class shorte
{
    public static void main(String []args)
    {
        short e = 56; // no need for explicit cast
        System.out.println(e);
        start(56);  // why does int literal here needs explicit cast ...
    }
    static void start(short e)
    {
        System.out.println(e);
    }
}

```

while creating normal short variable from an int literal in function didn't ask for any explicit cast , but
why does passing int literal to short variable (parameter passing) needs an explicit cast......??

and again 

i now it is not recommended to ask two unrelated questions in single post but this too trivial to ask in yet another post..

\*\*scope of 'for' counter variable \*\*

```
    public class forloop
{
    public static void main(String []args)
    {
        int a =12;
        for(int a =12;a<14;++a) // no showdowing of variable ,give compile-time error
        {
            System.out.println(a);
        }
    }
}

```

so i tried it with normal blocks

```
   a=12
{
a=13; even this doesn't compile 
}

```

does that mean, blocks don't have their own scope...