Предположим, что int b = 99
. Почему system.out.write(b)
напечатать «c» вместо 99? В то же время, используя PrintWriter
, я получаю фактическое значение b (99), даже если b = 'c'?Почему system.out.write конвертирует значение int в char?
ответ
Я думаю, что OP нужно сообщить, что ['write()'] (http://docs.oracle .com/javase/7/docs/api/java/io/PrintStream.html # write (int)) на самом деле делает – TheLostMind
Оба выхода 'c' точно такие же, как и следовало ожидать. System.out.write и PrintWriter.write как выходной тот же результат ... 'с'
int b = 99;
System.out.write(b);
System.out.flush();
System.out.println("");
PrintWriter x = new PrintWriter(System.out);
x.write(b);
x.flush();
выходы
с
с
Посмотрите на номер 99 на этой диаграмме http://www.asciitable.com/
Вот что говорится в документации к способу System.out.write
Обратите внимание, что байт записан как заданный; для записи символа, который будет преобразован в в соответствии с кодировкой символов по умолчанию платформы, использует методы print (char) или println (char).
PrintWriter имеет перегруженный метод передачи строки. Но в этом случае, когда вы передаете число, которое оно преобразует в char.
Записывает один символ. Переопределения: write (...) в Writer Параметры: c int, указывающий символ, который нужно записать.
Возможно, проблема заключается в том, что вы используете метод println для PrintWriter, но не для System.out, просто используйте метод println в System.out, и вы получите те же результаты. Это связано с тем, что вы используете перегруженный конструктор, который принимает и печатает целое число, но для записи метод принимает число и преобразует его в char, для чего он нужен.
Вещь System.out.write(int)
будет рассматривать аргумент как байт и будет записывать его в поток.
В вашем случае, так как вы прошли 99
который U0063
, следовательно c
печатается.
Но это поток байтов. Почему он не печатает только значение байта? –
- 1. Почему reinterpret_cast не конвертирует int в int?
- 2. Назначить значение int char
- 3. Почему char возвращает int
- 4. Почему параметр java int принимает значение pass char, но параметр char не принимает значение pass int?
- 5. Значение "char * _EXFUN (index, (const char *, int));"
- 6. char + char = int? Зачем?
- 7. Почему (String, Int) ожидается вместо (Char, Int)?
- 8. Haskell конвертирует Float в Int
- 9. Почему cin.get (char *, int, char t) и cin.getline (char *, int, char t)?
- 10. System.out.write ничего не печатает?
- 11. Как преобразовать значение char в int?
- 12. Как сохранить значение int в unsigned char?
- 13. Как преобразовать значение переменной char в int?
- 14. Как напечатать значение char в массиве int
- 15. Преобразование int в char (значение ASCII)
- 16. Почему Char неявно преобразован в Int?
- 17. Почему это возвращаемое значение? C++ int/char confusion
- 18. Почему TextReader.Read возвращает int, а не char?
- 19. Преобразование char * в int
- 20. swig конвертирует положительный длинный в отрицательный int
- 21. Почему numpy конвертирует 20000001 int в float32 как 20000000.?
- 22. Почему конвертирует sqlite. To,
- 23. Сохранение значения int char в переменной int
- 24. Таблица Pandas Pivot конвертирует float в int
- 25. (Char) 174, возвращающий значение (Char) 0174, почему?
- 26. int * vs char * Инициализация
- 27. Как преобразовать значение int в значение char в java
- 28. Почему «const int» используется для преобразования «int», но «const char []» в «char *» не
- 29. Контейнер с char * ключ и значение int
- 30. Кастинг int to char pointer: неожиданное значение?
Потому что вы путаете 'write' и' print', вероятно. – immibis
На самом деле System.out.write (b) ничего не делает, если вы не вызвали System.out.flush() –