gpt4 book ai didi

java - java.io.DataOutputStream 类中的 writeChar 和 writeShort 方法有什么区别?

转载 作者:太空宇宙 更新时间:2023-11-04 07:03:32 25 4
gpt4 key购买 nike

我目前正在学习java的基本I/O。请看下面的代码:

import java.io.DataOutputStream;
import java.io.IOException;
public class TestIO {

public static void main(String[] args) {

try(DataOutputStream out=new
DataOutputStream(new FileOutputStream("e:\\ccc.txt"))){

out.writeShort(67);
out.writeChar(67);

}catch(IOException ex){
ex.printStackTrace();
}

}

}

在输出 ccc.txt 文件中,我得到以下输出:

 C C

据我了解,这两种方法都会将两个字节写入输出流,并且二进制字符串 67 是 1000011,它代表 ASCII 或任何其他代码中的大写字母 C。 C 之前的空格是方法读取的字节 0000 0000。

但是,如果这两种方法都只是将两个字节写入输出流,那么它们之间有什么区别?我期望 writeShort 可以将两个字节写入输出流,然后将其传输回整数。换句话说,如何直接将整数67写入文件,而不将其转换为字符?

<小时/>

换个角度问这个问题,在什么情况下这两种方法会产生不同的结果?我需要一个现实世界的例子。谢谢!

最佳答案

However, what is the difference between the two methods if they both simply write two bytes to the outputstream?

这听起来很老套,但是:一个需要一个 char,另一个需要一个 short。这些类型不能相互转换,并且您可以在不同的时间使用它们。尽管 char 只是一个 16 位无符号整数,但其预期用途是用于 UTF-16 代码单元;你不会(或者至少不应该)使用它来存储你认为为数字的值......而short则相反。

因此,如果您想要写入char,请使用writeChar。如果您有short,请使用writeShort。在这两种情况下,您都希望使用相应的方法进行阅读。

关于java - java.io.DataOutputStream 类中的 writeChar 和 writeShort 方法有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21757707/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com