假设int b = 99
。为什么system.out.write(b)
打印" c"而不是99?同时使用PrintWriter
我得到b(99)的实际值,即使b =' c'?
答案 0 :(得分:3)
答案 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,这就是它的用途。