Пробелы и переводы строк считаются байтом в Java? - PullRequest
0 голосов
/ 15 мая 2018

Я хочу закодировать метод, который извлекает количество байтов файла Java.

Итак, компилятор сохраняет каждый символ файла в байте памяти, но также он хранит пробелы, \n и \r в одном байте памяти? Должен ли я включить их в свои расчеты?

Я нигде не смог найти конкретного объяснения.

Ответы [ 3 ]

0 голосов
/ 15 мая 2018

Пробел - это всегда символ от \ n и \ r до ''. Поэтому они хранятся так же, как символы. Поскольку в ASCII все они меньше 255, я бы предположил, что это всего лишь байт (насколько я понимаю, стандартные символы на основе ASCII представлены в виде одного байта, даже в Unicode, потому что их представление достаточно мало по значению, чтобы зарезервировать простой байт, однако все, что больше 255, в конечном итоге будет иметь два байта - или больше для UTF-32).

Все, что сказано, если новая строка или возврат каретки, о котором вы говорите, это от вызова System.out.println (), то они не будут сохранены вообще (или один раз?), Как вы вызываете предопределенный метод Java. Символ новой строки должен быть сохранен только один раз (в методе), чтобы вызываться снова и снова. Java не нужно хранить несколько копий этой новой строки для многократного вызова System.out.println ().

0 голосов
/ 15 мая 2018

Да, они должны быть включены в ваши расчеты - специальные символы также являются символами.Кроме того, Java хранит char, используя 2 байта :), надеюсь, это помогло!

0 голосов
/ 15 мая 2018

Я нигде не смог найти конкретного объяснения.

См. спецификацию Java

Язык программирования Java представляет текст в 16-битных последовательностях кодовые единицы с использованием кодировки UTF-16.

Это означает, что каждый отдельный символ (включая новую строку и перевод строки) занимает 16 бит - 2 байта - в памяти.

...