For example, a conversion from int to byte for the value 10
is exact because the result, 10, is the same as the original value. In
contrast, if the int variable i stores the value 1000 then a
narrowing primitive conversion to byte will yield the result -24.
Loss of information has occurred: both the magnitude and the sign of the
result are different than those of the original value. As such, a conversion
from int to byte for the value 1000 is inexact. Finally a
widening primitive conversion from byte to int is
unconditionally exact because it will always succeed with no loss of
information about the magnitude of the numeric value.
The methods in this class provide the run-time support for the exactness
checks of testing conversions from a primitive type to primitive type. These
methods may be used, for example, by Java compiler implementations to
implement checks for instanceof and pattern matching runtime
implementations. Unconditionally exact testing conversions do not require a
corresponding action at run time and, for this reason, methods corresponding
to these exactness checks are omitted here.
The run time conversion checks examine whether loss of information would
occur if a testing conversion would be to be applied. In those cases where a
floating-point primitive type is involved, and the value of the testing
conversion is either signed zero, signed infinity or NaN, these
methods comply with the following:
NaN or infinity to an integer type is
considered inexact.NaN or infinity or signed zero to another
floating-point type is considered exact.Implementation Note
Some exactness checks describe a test which can be redirected
safely through one of the existing methods. Those are omitted too (i.e.,
byte to char can be redirected to
ExactConversionsSupport#isIntToCharExact(int), short to
byte can be redirected to
ExactConversionsSupport#isIntToByteExact(int) and similarly for
short to char, char to byte and char
to short to the corresponding methods that take an int).
instanceof Operator
| Access | Constructor and Description |
|---|---|
| private |
| Modifier and Type | Method and Description |
|---|---|
| public static boolean | Returns: true if and only if the passed value can be converted exactly to the target typevalue n)Exactness method from double to byte |
| public static boolean | Returns: true if and only if the passed value can be converted exactly to the target typevalue n)Exactness method from double to char |
| public static boolean | Returns: true if and only if the passed value can be converted exactly to the target typevalue n)Exactness method from double to float |
| public static boolean | Returns: true if and only if the passed value can be converted exactly to the target typevalue n)Exactness method from double to int |
| public static boolean | Returns: true if and only if the passed value can be converted exactly to the target typevalue n)Exactness method from double to long |
| public static boolean | Returns: true if and only if the passed value can be converted exactly to the target typevalue n)Exactness method from double to short |
| public static boolean | Returns: true if and only if the passed value can be converted exactly to the target typevalue n)Exactness method from float to byte |
| public static boolean | Returns: true if and only if the passed value can be converted exactly to the target typevalue n)Exactness method from float to char |
| public static boolean | Returns: true if and only if the passed value can be converted exactly to the target typevalue n)Exactness method from float to int |
| public static boolean | Returns: true if and only if the passed value can be converted exactly to the target typevalue n)Exactness method from float to long |
| public static boolean | Returns: true if and only if the passed value can be converted exactly to the target typevalue n)Exactness method from float to short |
| public static boolean | Returns: true if and only if the passed value can be converted exactly to the target typevalue n)Exactness method from int to byte |
| public static boolean | Returns: true if and only if the passed value can be converted exactly to the target typevalue n)Exactness method from int to char |
| public static boolean | Returns: true if and only if the passed value can be converted exactly to the target typevalue n)Exactness method from int to float |
| public static boolean | Returns: true if and only if the passed value can be converted exactly to the target typevalue n)Exactness method from int to short |
| public static boolean | Returns: true if and only if the passed value can be converted exactly to the target typevalue n)Exactness method from long to byte |
| public static boolean | Returns: true if and only if the passed value can be converted exactly to the target typevalue n)Exactness method from long to char |
| public static boolean | Returns: true if and only if the passed value can be converted exactly to the target typevalue n)Exactness method from long to double |
| public static boolean | Returns: true if and only if the passed value can be converted exactly to the target typevalue n)Exactness method from long to float |
| public static boolean | Returns: true if and only if the passed value can be converted exactly to the target typevalue n)Exactness method from long to int |
| public static boolean | Returns: true if and only if the passed value can be converted exactly to the target typevalue n)Exactness method from long to short |
| private static boolean | |
| private static boolean |
| ExactConversionsSupport | back to summary |
|---|---|
| private ExactConversionsSupport() | |
| isDoubleToByteExact | back to summary |
|---|---|
| public static boolean isDoubleToByteExact(double n) Exactness method from double to byte Implementation Specification relies on the notion of representation equivalence defined in the specification of the Double class.
| |
| isDoubleToCharExact | back to summary |
|---|---|
| public static boolean isDoubleToCharExact(double n) Exactness method from double to char Implementation Specification relies on the notion of representation equivalence defined in the specification of the Double class.
| |
| isDoubleToFloatExact | back to summary |
|---|---|
| public static boolean isDoubleToFloatExact(double n) Exactness method from double to float Implementation Specification relies on the notion of representation equivalence defined in the specification of the Double class.
| |
| isDoubleToIntExact | back to summary |
|---|---|
| public static boolean isDoubleToIntExact(double n) Exactness method from double to int Implementation Specification relies on the notion of representation equivalence defined in the specification of the Double class.
| |
| isDoubleToLongExact | back to summary |
|---|---|
| public static boolean isDoubleToLongExact(double n) Exactness method from double to long Implementation Specification relies on the notion of representation equivalence defined in the specification of the Double class.
| |
| isDoubleToShortExact | back to summary |
|---|---|
| public static boolean isDoubleToShortExact(double n) Exactness method from double to short Implementation Specification relies on the notion of representation equivalence defined in the specification of the Double class.
| |
| isFloatToByteExact | back to summary |
|---|---|
| public static boolean isFloatToByteExact(float n) Exactness method from float to byte Implementation Specification relies on the notion of representation equivalence defined in the specification of the Double class.
| |
| isFloatToCharExact | back to summary |
|---|---|
| public static boolean isFloatToCharExact(float n) Exactness method from float to char Implementation Specification relies on the notion of representation equivalence defined in the specification of the Double class.
| |
| isFloatToIntExact | back to summary |
|---|---|
| public static boolean isFloatToIntExact(float n) Exactness method from float to int Implementation Specification relies on the notion of representation equivalence defined in the specification of the Double class.
| |
| isFloatToLongExact | back to summary |
|---|---|
| public static boolean isFloatToLongExact(float n) Exactness method from float to long Implementation Specification relies on the notion of representation equivalence defined in the specification of the Double class.
| |
| isFloatToShortExact | back to summary |
|---|---|
| public static boolean isFloatToShortExact(float n) Exactness method from float to short Implementation Specification relies on the notion of representation equivalence defined in the specification of the Double class.
| |
| isIntToByteExact | back to summary |
|---|---|
| public static boolean isIntToByteExact(int n) Exactness method from int to byte
| |
| isIntToCharExact | back to summary |
|---|---|
| public static boolean isIntToCharExact(int n) Exactness method from int to char
| |
| isIntToFloatExact | back to summary |
|---|---|
| public static boolean isIntToFloatExact(int n) Exactness method from int to float Implementation Specification relies on the notion of representation equivalence defined in the specification of the Double class.
| |
| isIntToShortExact | back to summary |
|---|---|
| public static boolean isIntToShortExact(int n) Exactness method from int to short
| |
| isLongToByteExact | back to summary |
|---|---|
| public static boolean isLongToByteExact(long n) Exactness method from long to byte
| |
| isLongToCharExact | back to summary |
|---|---|
| public static boolean isLongToCharExact(long n) Exactness method from long to char
| |
| isLongToDoubleExact | back to summary |
|---|---|
| public static boolean isLongToDoubleExact(long n) Exactness method from long to double Implementation Specification relies on the notion of representation equivalence defined in the specification of the Double class.
| |
| isLongToFloatExact | back to summary |
|---|---|
| public static boolean isLongToFloatExact(long n) Exactness method from long to float Implementation Specification relies on the notion of representation equivalence defined in the specification of the Double class.
| |
| isLongToIntExact | back to summary |
|---|---|
| public static boolean isLongToIntExact(long n) Exactness method from long to int
| |
| isLongToShortExact | back to summary |
|---|---|
| public static boolean isLongToShortExact(long n) Exactness method from long to short
| |
| isNegativeZero | back to summary |
|---|---|
| private static boolean isNegativeZero(float n) | |
| isNegativeZero | back to summary |
|---|---|
| private static boolean isNegativeZero(double n) | |