Зачем мне явно приводить примитивы char к байту и к коротким?

Относительно примитивов: когда я преобразую от меньшего к большему типу, приведение неявно, когда я преобразую от большего к меньшему типу, мне нужно явно привести примитивы, что 'ясно из-за потери данных. Но есть кое-что, чего я нет получить. Когда я поднимаю или опускаю до char в некоторых случаях (байтовый и короткий), мне всегда нужно явно приводить в обоих направлениях, хотя байт (8 бит) помещается в char (16 бит)?

(смотрите такжеhttp://docs.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html)

Смотрите мои примеры ...

public class CastingTest
{
    public static void main(String[] args)
    {
        //casting from smaller to bigger types
        short c = 13;
        int d = c;

        byte f = 34;
        short g = f;

        byte h = 20;
        long i = h;

        byte var03 = 6;
        double var04 = var03;   

        //casting from bigger to smaller types
        int j = 12;
        short k = (short)j;

        long m = 56;
        int n = (int)m;

        double o = 19;
        short p = (short)o;

        //not possible without explicit cast, but why?
        byte var01 = 3;
        char var02 = (char)var01;

        short var05 = 5;
        char var06 = (char)var05;

        char var07 = 'k';
        short var08 = (short)var07;
    }
}

Ответы на вопрос(2)

Ваш ответ на вопрос