在Java中,空格和换行符被视为字节吗?
我想编写一个提取Java文件字节数的方法 因此,编译器将文件的每个字符存储在一个字节的内存中,但它是否也将空格、在Java中,空格和换行符被视为字节吗?,java,parsing,memory,byte,Java,Parsing,Memory,Byte,我想编写一个提取Java文件字节数的方法 因此,编译器将文件的每个字符存储在一个字节的内存中,但它是否也将空格、\n和\r存储在一个字节的内存中?我应该把它们包括在我的计算中吗 我到处都找不到具体的解释 我到处都找不到具体的解释 见 Java编程语言以16位序列表示文本 编码单元,使用UTF-16编码 这意味着,每个字符(包括新行和换行符)在内存中占用16位(2字节) 我到处都找不到具体的解释 见 Java编程语言以16位序列表示文本 编码单元,使用UTF-16编码 这意味着,每个字符(包括新行
\n
和\r
存储在一个字节的内存中?我应该把它们包括在我的计算中吗
我到处都找不到具体的解释
我到处都找不到具体的解释
见
Java编程语言以16位序列表示文本
编码单元,使用UTF-16编码
这意味着,每个字符(包括新行和换行符)在内存中占用16位(2字节)
我到处都找不到具体的解释
见
Java编程语言以16位序列表示文本
编码单元,使用UTF-16编码
这意味着,每个字符(包括新行和换行符)在内存中占用16位(2字节)。空白始终是一个字符,从\n和\r到“”。因此,它们的存储方式与字符相同。因为在ASCII中它们都在255以下,所以我假设它们只是一个字节(我的理解是,基于ASCII的标准字符被表示为一个字节,即使是在Unicode中,因为它们的表示值很低,只保留一个字节;然而,任何大于255的字符最终都会是两个字节——或者更大,对于UTF-32来说)
话虽如此,如果您所说的新行或回车是来自对System.out.println()的调用,那么当您通过Java调用预定义方法时,它们将不会被存储(或者一次)。新行字符只需存储一次(在方法中)即可反复调用。Java无需存储该换行符的多个副本即可多次调用System.out.println()。空格始终是一个字符,从\n和\r到“”。因此,它们的存储方式与字符相同。因为在ASCII中它们都在255以下,所以我假设它们只是一个字节(我的理解是,基于ASCII的标准字符被表示为一个字节,即使是在Unicode中,因为它们的表示值很低,只保留一个字节;然而,任何大于255的字符最终都会是两个字节——或者更大,对于UTF-32来说)
话虽如此,如果您所说的新行或回车是来自对System.out.println()的调用,那么当您通过Java调用预定义方法时,它们将不会被存储(或者一次)。新行字符只需存储一次(在方法中)即可反复调用。Java不需要存储该换行符的多个副本就可以多次调用System.out.println()。是的,它们应该包括在计算中——特殊字符也是字符。另外,Java使用2个字节存储一个
char
),希望这有帮助 是的,它们应该包括在计算中——特殊字符也是字符。另外,Java使用2个字节存储一个char
),希望这有帮助 由于16位对于每个Unicode字符都是不够的,因此其中一些字符占用两个2字节的代码单元。“…补充字符表示为16位代码单元对…”(您引用的文本上方的几行)。由于16位不足以容纳每个Unicode字符,因此其中一些字符占用两个2字节代码单元。“…补充字符表示为成对的16位代码单元…”(您引用的文本上方的几行。)