- Any bigger than an int can NEVER be assigned to an int or anything smaller than int (byte, char, or short) without explicit cast.
- Constant values up to int can be assigned (without cast) to variables of lesser size (e.g. short to byte) if the values are representable by the variable.
- Operands of mathematical operators are ALWAYS promoted to AT LEAST int. (e.g. byte*byte both bytes will be first promoted to int) and the return value will be AT LEAST int.
- Compound assignment operators (+=, *= etc) have strange ways so ready this carefully: A compound assignment expression of the form E1 op = E2 is equivalent to E1 = (T)((E1) op (E2)), where T is the type of E1
- A char value can ALWAYS be assigned to an int variable, since the int type is wider than the char type.
- A narrowing primitive conversion may be used if all of the following conditions are satisfied:
-
- The expression is a constant expression of type int.
- The type of the variable is byte, short or char.
- The value of expression is representable in the type of the variable.
- NOTE THAT narrowing conversion doesn‘t apply to long or double. So, char ch = 30L; will fail althrough 30 is representable by a char.
时间: 2024-08-14 20:58:57