Règles de diffusion pour les types primitifs dans Java

En java,

Il y a des types intégraux(char/short/int/long/byte)

Il y a des types flottants(float/double)

Il est de type booléen(boolean), ne faisant pas partie intégrante de type, à la différence du langage C.

Question 1)

Est-il un générique règle pour la coulée(comme par JLS) qui parle, le type peut être converti en un autre type? De bon sens, je sais que, de l'intégrale et les types flottants casting pour boolean n'est pas autorisé

La Question 2)

Merci de m'aider à comprendre les raisons pour ci-dessous de sortie:

        /*
         * Casting rules for primitive types
         */
        double aDoubleValue = 30000000000000000000.123438934;
        int doubleToInt = (int)aDoubleValue; //stores max value 2147483647, makes sense!!
        byte doubleToByte = (byte)aDoubleValue; //stores -1, why not 127?
        short doubleToShort = (short)aDoubleValue; //stores -1, why not 32767?
        long doubleToLong = (long)aDoubleValue; //stores 9223372036854775807, makes sense!!
        float doubleToFloat = (float)aDoubleValue; //stores 3.0E19, 3.0 x 10^19  max value of float
        char doubleToChar = (char)aDoubleValue; //what does this store?

source d'informationauteur overexchange