Java中的PrintStream write()方法

Java中的PrintStream write()方法,java,printstream,Java,Printstream,直接从这个Java: 写 公共无效写入(int b) 将指定的字节写入此流。如果字节是换行符,则 启用自动刷新后,将调用刷新方法 请注意,字节是按给定方式写入的;写一个将 根据平台的默认字符编码进行翻译, 使用print(char)或println(char)方法 我看到它是指定的字节是按给定的方式写入的 然而,如果我尝试写(65)我得到了我期望的A 我应该在write()中写什么才能与print()不匹配? 你能举个例子吗?二进制01000001(字节)是ASCII字符A,所以当你以字符串的形

直接从这个Java:

公共无效写入(int b)

将指定的字节写入此流。如果字节是换行符,则 启用自动刷新后,将调用刷新方法

请注意,字节是按给定方式写入的;写一个将 根据平台的默认字符编码进行翻译, 使用print(char)或println(char)方法

我看到它是指定的
字节是按给定的方式写入的
然而,如果我尝试写(65)
我得到了我期望的
A

我应该在
write()
中写什么才能与
print()
不匹配?
你能举个例子吗?

二进制
01000001
字节
)是ASCII字符
A
,所以当你以
字符串
的形式读取时,你会得到它

你需要使用

以获得相同的输出

或者任何你需要的类型

write(new Integer(65).toString().getBytes());
我应该在write()中写什么才能与print()不匹配?你能举个例子吗

印刷品

65 // the String value '65'
A // the character value of binary 65
阅读有关
打印方法的说明。上面的一个接受
int

打印一个整数。string.valueOf(int)生成的字符串为 根据平台的默认字符转换为字节 编码,而这些字节正是按照 写入(int)方法。

在这两种情况下,字节都会写入流,但它们的显示方式取决于您读取它们的方式
String
具有接受
charsetName
Charset
对象的构造函数。A(作为一个概念和一个类)是

16位Unicode代码单元序列之间的命名映射 和字节序列

给定

写入(sData,0,sData.length)
打印

应该是等效的。

如果您尝试

writer.print('Ä');

根据您的平台,您可能会得到不同的结果。对于使用拉丁语-1作为默认编码的平台,它可能是一个单字节,或者对于使用UTF-8的平台,它可能是两个字节。

Binary 65(作为一个字节)是ASCII字符
a
@Sotirios Delimanolis再次阅读该问题,他希望“a”
write(65)
a
输出到流中
print(65)
65
输出到流中。我认为
print(65)
将采用Unicode字符65(0x41),使用默认字符编码将其转换为字节,然后写入这些字节。如果是UTF-8,则为
A
。事实上,在很多字符编码中,它都是
A
@LeeMeador。我想知道“按原样写入字节”和使用编码之间的区别。“按原样字节”我希望有些东西没有编码。然而,A是编码的结果
65 // the String value '65'
A // the character value of binary 65
String s = "some string";
byte[] sData = s.getBytes();
writer.print('Ä');