Преобразование и приведение примитивных типов - Вопросы

Всего: 5 вопросов

1. 

Что такое расширяющее преобразование?

Преобразование от меньшего типа к большему, например из byte в int. Оно автоматическое (неявное) и безопасное, без потери данных.

2. 

Что такое сужающее преобразование?

Преобразование от большего типа к меньшему, например из int в byte. Его нужно указывать явно через приведение в скобках, и оно может привести к потере данных.

3. 

Какой тип имеет результат выражения при сложении двух значений типа byte?

Результат имеет тип int. В выражениях Java продвигает операнды, меньшие int (byte, short), к типу int, поэтому byte + byte даёт int, а не byte.

4. 

Почему b1 += b2 компилируется, а b1 = b1 + b2 нет (для переменных типа byte)?

Составные операторы присваивания (+=, -=, *=, /=) автоматически выполняют неявное приведение обратно к типу переменной. Поэтому b1 += b2 компилируется, а b1 = b1 + b2 даёт результат типа int, который нельзя присвоить в byte без явного приведения.

5. 

Почему byte не преобразуется в char автоматически, хотя char шире?

Потому что byte и short — знаковые типы, а char — беззнаковый. Компилятору нужно явное приведение, чтобы понять, как обрабатывать знаковый бит, поэтому преобразование не автоматическое, несмотря на то что char занимает 16 бит.

Страница 1 из 1