Думала для того, чтобы записывать в него байты, но байт от 0 до 255, а byte от -128 до 127. И
FileInputStream inputStream = new FileInputStream(fileName);
inputStream.read() вообще возвращает int, хотя предназначен для чтения байтов.
Anastasia Ilyushenko
34 уровень
Зачем нужен тип byte?
Решен
Комментарии (8)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Anastasia Ilyushenko
25 августа 2018, 14:48
Спасибо большое
0
--------Master
25 августа 2018, 14:38
Добавлю, inputStream.read() возвращает int еще и потому, что помимо значений в пределах 1 байта, т.е. от 0 до 255, есть еще -1 при ошибке
0
Максим
25 августа 2018, 14:30
ну...байт - самый самый быстрый и маленький тип данных. Можно прочитать в массив byte очень большой файл, например, с минимальным расходом памяти.
Правда, потом при работе придётся конвертить значения в диапазон 0-255.
На самом деле значения байтов > 127 никуда не пропадают, просто в 10-ном представлении старший бит мы видим как "-".
В итоге байты 126, 127, 128, 129... мы видим как 126, 127, -128, -127...
А в двоичном представлении это всё будет:
0111 1110
0111 1111
1000 0000
1000 0001
+1
Александр Толкачёв
25 августа 2018, 14:39
Добавлю. Например, если перевести число (short) 130 в byte, то получится -126, таким образом исходное значение будет потеряно и обратного преобразования не получится, т.к. (byte) -126 = (short) -126.
0
Максим
25 августа 2018, 14:41
Обратно - ручками :)
(код не проверен мной, но идея ясна, я думаю)
0
Александр Толкачёв
25 августа 2018, 14:56
это конечно здорово, но работает только в том случае, когда ты знаешь, что это искаженное переводом в байт число. Решение на частный случай )
+1
Максим
25 августа 2018, 16:34
В общем случае - да, не все приведеня типов работают без потерь.
В Вашем случае можно выполнить приведение так:
+1
Александр Толкачёв
25 августа 2018, 14:21
byte так называется, потому что под хранение переменных его типа выделяется 8 бит (1 байт). Но он не может хранить значения за диапазоном -128;127, потому что старший бит определён под знак числа.
Обычно его используют тогда, когда знают, что все значения будут в его диапазоне. Сделано для более рационального использования памяти, т.к. например, для того же int'а выделяется 32 бита, что в четыре раза больше.
+2