【问题标题】:How many characters can i print using System.out.println in java我可以在 java 中使用 System.out.println 打印多少个字符
【发布时间】:2014-12-30 11:16:38
【问题描述】:

我想知道,我可以在windows 上使用 java 中的标准输出打印多少个字符 像这样:

for(int i = 0; i < Integer.MAX_VALUE; i++){
   System.out.println((char)i);
}

什么ascii表使用标准输出?

【问题讨论】:

  • Java 在 Windows 上的默认 file.encodingCp1252,但您可以更改它。该编码支持 ASCII 字符 (0-0x7F),略少于 32 个 Windows 选择的字符,大部分位于 U+20xx 块中,以及 ISO-8859-1 aka Latin-1 (0xA0-0xFF) 的“G1”部分。其他 8 位编码将提供 256 个或略少的字符,但不同。 Unicode 编码将提供近 65536 个“UCS-2”或“BMP”字符,以及更多可选; Windows 上的许多/大多数其他软件支持 UTF-8 和 UTF-16{,BE,LE}[BOM] 编码,但不是全部;许多其他系统都支持 UTF-8。

标签: java char ascii


【解决方案1】:

试试这个。您可以达到 255。在 255 之后,您可以看到 (char)i 的所有内容是?

public class Testing{
    public static void main(String args[]){
        for(int i = 0; i < Integer.MAX_VALUE; i++){
            System.out.println(i+" "+(char)i);
            if(i == 270){
                break;
            }
        }
    }
}

【讨论】:

  • 在您的文本中使用“255”,但在您的代码中使用“270”。解释?
  • 只是为了显示将打印 15 行? After 255 all you can see for (char)i is ?
【解决方案2】:

由于Stringchar-array,您应该受到Integer.MAX_VALUE(2147483647) 的限制。尽管大多数 IDE 对控制台输出都有自定义限制。

【讨论】:

  • Java char 是 16 位无符号且限制为 65535,其值为 Unicode“基本多语言平面”(BMP) 中的字符。一些额外的(但很少见)字符两个 chars 表示,称为“代理对”。将int 转换为char 占用低16 位,因此循环重复所有chars 头发少于32768 次。
【解决方案3】:

您的代码不会连接或累积输出,因此它会一次打印 1 个字符 因此它将打印 2^31-1(2 的 31 次方)- 1 个字符,每个字符在单独的行中

虽然,有些字符会显示为垃圾字符或空格,这是由于使用了字符集,并且用于显示输出的 IDE/终端视图支持。

更多关于Integer.MAX_VALUE

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-11-13
    • 1970-01-01
    • 2022-01-25
    • 1970-01-01
    • 1970-01-01
    • 2010-12-17
    • 1970-01-01
    相关资源
    最近更新 更多