Java中是否将空格和换行符视为一个字节?

时间:2018-05-15 17:00:47

标签: java parsing memory byte

我想编写一个提取Java文件字节数的方法。

因此,编译器将文件的每个字符存储在一个字节的内存中,但它是否也在一个字节的内存中存储空格\n\r?我应该在计算中加入它们吗?

我无法在任何地方找到具体的解释。

3 个答案:

答案 0 :(得分:3)

  

我无法在任何地方找到具体的解释。

请参阅Java specification

  

Java编程语言以16位序列表示文本   代码单元,使用UTF-16编码。

这意味着每个单个字符(包括一个新行和换行符)在内存中占用16位 - 2个字节。

答案 1 :(得分:1)

空格始终是一个字符,从\ n和\ r到''。因此它们的存储方式与字符相同。由于它们在ASCII中都低于255,我认为它们只是一个字节(我的理解是基于标准ASCII的字符表示为单个字节,即使在Unicode中也是如此,因为它们的表示值足够低以保留仅仅是一个字节;但是,任何大于255的东西最终都是两个字节 - 或者更大,对于UTF-32而言。

所有这一切,如果您正在谈论的新行或回车来自对System.out.println()的调用,那么当您调用时,它们将不会被存储(或者一次?) Java预定义的方法。新行字符只需要存储一次(在方法中)以便一次又一次地调用。 Java不需要存储该换行符的多个副本来多次调用System.out.println()。

答案 2 :(得分:1)

是的,它们应该包含在您的计算中 - 特殊字符也是字符。此外,Java使用2个字节存储char :)希望这有帮助!