Dlaczego następujący kod nie generuje błąd?Dlaczego mogę generować char powyżej maksymalnej wartości?
System.out.println((char) 2147483647);
Według oracle datatypes maksymalny rozmiar dla char
jest 65,535
.
- char: Typ danych char jest jeden 16-bitowy znak Unicode. Ma minimalną wartość "\ u0000" (lub 0) i maksymalną wartość "\ uffff" (lub 65 535 włącznie).
Co to jest drukowane? Nie "2147483647". Dlaczego nie? Jest twoja odpowiedź ... –
Powoduje konwersję zawężającą, 2147483647 to int, a zwężasz ją, by była char. Jak już wspomniałeś, maksymalna wartość char to 65535. Jeśli wykonasz a, System.out.println ((int) (char) 2147483647); , zobaczysz, że wydrukuje 65535, a nie 2147483647. HTH –