Преобразование и приведение примитивных типов - Вопросы
Всего: 5 вопросов
1. Что такое расширяющее преобразование?
Что такое расширяющее преобразование?
Преобразование от меньшего типа к большему, например из byte в int. Оно автоматическое (неявное) и безопасное, без потери данных.
2. Что такое сужающее преобразование?
Что такое сужающее преобразование?
Преобразование от большего типа к меньшему, например из int в byte. Его нужно указывать явно через приведение в скобках, и оно может привести к потере данных.
3. Какой тип имеет результат выражения при сложении двух значений типа byte?
Какой тип имеет результат выражения при сложении двух значений типа byte?
Результат имеет тип int. В выражениях Java продвигает операнды, меньшие int (byte, short), к типу int, поэтому byte + byte даёт int, а не byte.
4. Почему b1 += b2 компилируется, а b1 = b1 + b2 нет (для переменных типа byte)?
Почему b1 += b2 компилируется, а b1 = b1 + b2 нет (для переменных типа byte)?
Составные операторы присваивания (+=, -=, *=, /=) автоматически выполняют неявное приведение обратно к типу переменной. Поэтому b1 += b2 компилируется, а b1 = b1 + b2 даёт результат типа int, который нельзя присвоить в byte без явного приведения.
5. Почему byte не преобразуется в char автоматически, хотя char шире?
Почему byte не преобразуется в char автоматически, хотя char шире?
Потому что byte и short — знаковые типы, а char — беззнаковый. Компилятору нужно явное приведение, чтобы понять, как обрабатывать знаковый бит, поэтому преобразование не автоматическое, несмотря на то что char занимает 16 бит.