Dlaczego nie możemy przekazać wartość char
jako argument do dowolnej metody, która akceptuje parametr short
, natomiast możemy przekazać wartość char
innego sposobu, który parametr jest int
typu? Dlaczego odlewanie typów nie ma miejsca od char
do short
, biorąc pod uwagę, że rozmiary są równe? Mam nadzieję, że short może przechowywać tak wiele wartości, jak short
.Rodzaj odlewania w Javie z char do krótkiej
Odpowiedz
Dlaczego nie możemy przekazać wartość
char
jako argument do dowolnej metody, która przyjmuje parametrshort
Ponieważ nie ma niejawna konwersja z char
do short
w kontekście wywołania.
natomiast możemy przekazać wartość innego sposobu, który parametr jest
int
typuchar
?
To dlatego, że tam jest niejawna konwersja dostępny od char
do int
w kontekście wywołania.
Dlaczego wpisać odlewania nie odbywają się od
char
doshort
, biorąc pod uwagę, że rozmiary są równe? Mam nadzieję, że short może przechowywać tak wiele wartości, jakshort
.
Chociaż char
i short
są takie same rozmiar, char
jest niepodpisany natomiast short
jest podpisany. Dlatego nie ma żadnej niejawnej konwersji z char
do short
.
Konwersja z char
do int
jest poszerzenie prymitywny konwersji (JLS 5.1.2), podczas konwersji z char
do short
jest zwężenie prymitywny konwersji (JLS 5.1.3). W szczególności (kopalnia nacisk)
Konwersja zwężenia karbonizatu integralną typu T również po prostu odrzuca wszystko ale najniższe bity rzędu n, gdzie n jest liczbą bitów stosowanych do reprezentowania typu T. w oprócz możliwej utraty informacji o wielkości wartości liczbowej, może to spowodować, że wynikowa wartość będzie liczbą ujemną, mimo że znaki oznaczają 16-bitowe liczby całkowite bez znaku.
specyfikacji Java mówi:
Ponadto, jeśli ekspresja jest stała wyrażenie (§15.28) typu bajtu krótki char lub int:
Przewężenie prymitywny Konwersja może być użyta, jeśli typ zmiennej to bajt, short lub char, a wartość stałego wyrażenia jest reprezentowana w typie zmiennej.
Char ma wartość minimalną 0 i maksymalną wartość 65 535.
Krótkie ma wartość minimalną -32 768 i maksymalną wartość 32 767.
Wartość Integer ma wartość minimalną -2,147,483,648 i maksymalną wartość 2 147 483 647.
Więc znak może pasować do liczby całkowitej, ale nie krótki, dlatego powinieneś zapewnić java, że chcesz zrobić tutaj typecast.
zarówno krótkie, jak i całkowite mogą zawierać znak i niepodpisane wartości, ale w przypadku liczby całkowitej, ale nie w krótkim czasie, następuje rzutowanie. –
Tak. Char ma wartość minimalną 0 i maksymalną wartość 65.535. Krótkie ma wartość minimalną -32 768 i maksymalną wartość 32 767. Integer ma wartość minimalną -2,147,483,648 i maksymalną wartość 2 147 483 647. Więc znak może pasować do liczby całkowitej, ale nie do skrótu. – Max
tak ... Mam to. Thank wiele –
Naprawiłem większość pytań, aby lepiej czytać po angielsku, ale nie rozumiałem ostatniego zdania: "Mam nadzieję, że krótkie może również przechowywać wystarczająco dużo wartości, jak to jest wymagane w przypadku krótkiego", więc zostawiłem to jako to było ... –