gpt4 book ai didi

java - System.out如何实现字符的控制台输出?

转载 作者:行者123 更新时间:2023-12-01 11:07:17 25 4
gpt4 key购买 nike

我最近读到 System.out 和 System.in 是 PrintStreams,它们是字节流类,即它们处理字节。那么当 Java 使用 16 位 Unicode 字符时,它们如何以字符形式读取输入并将输出写入呢?

最佳答案

当我们查看上面的此类文档/教程时,我们犯的明显错误是 System.in/out/err正在处理字节数组,我们假设一个字节就是一个字符。

Think like this, A byte is just a 8 bits of 0/1 value and there is a char type, which is actually character made up of two bytes. i.e. 16 bits.

Oracle doc: Java primitives

<小时/>

那么System.in/out/err如何处理字节呢?

问题是它们是像InputStream这样的类的实现和OutputStream ,使用这些 API/实现的服务,我们将看到实际字符在我们的控制台上读取/写入。

基本上他们使用 CharsetEncoder api 来实现这些事情。根据文档,

/**
* An engine that can transform a sequence of sixteen-bit Unicode characters
* into a sequence of bytes in a specific charset.
* ... ...
*/
public abstract class CharsetEncoder

另请查看此文档,它解释了 unicode 如何用 Java 处理。

关于java - System.out如何实现字符的控制台输出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32811290/

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