byte b = 0xFFFFFFFF; //OK, because integer -1 sits between -128 and 127, FINE!!
char ch = 0xFFFFFFFF; //Not OK, because integer -1 does not sit between 0 and 65535, FINE!!
byte b = 0L; //Compiler says Not OK? But long integer 0 sits between -128 and 127?
上記のコードの 3 行目で Java コンパイラによって適用される縮小規則には納得できません。
この絞り込みルールの背後にあるロジックを理解するのを手伝ってください。