为什么system.out.write将int值转换为char?

时间:2015-03-21 07:08:05

标签: java

假设int b = 99。为什么system.out.write(b)打印" c"而不是99?同时使用PrintWriter我得到b(99)的实际值,即使b =' c'?

3 个答案:

答案 0 :(得分:3)

  

假设int b = 99.为什么system.out.write(b)打印“c”

because U0063 is "c"

99 = 0x63

答案 1 :(得分:3)

事情是System.out.write(int)会将参数视为字节,并将其写入流。

在您通过99 U0063后,因此会打印c

答案 2 :(得分:1)

输出' c'完全相同和预期。 System.out.write和PrintWriter.write都输出相同的结果......' c'

    int b = 99;
    System.out.write(b);
    System.out.flush();
    System.out.println("");
    PrintWriter x = new PrintWriter(System.out);
    x.write(b);
    x.flush();

输出

C

C

查看此图表上的数字99 http://www.asciitable.com/

以下是文档中有关System.out.write方法的内容

  

请注意,该字节写为给定;写一个将要的角色   根据平台的默认字符编码进行翻译,   使用print(char)或println(char)方法。

PrintWriter有一个用于传递String的重载方法。但在这种情况下,当你传递一个它转换为char的数字时。

  

写一个字符。覆盖:在Writer中写入(...)   参数:c int指定要写入的字符。

看来你的问题是你正在为PrintWriter使用println方法而不是System.out,只需在System.out中使用println方法,你就会得到相同的结果。这是因为你正在使用一个重载的构造函数来接受并打印一个整数,但是对于write,该方法获取数字并将其转换为char,这就是它的用途。