【问题标题】:Character range in JavaJava中的字符范围
【发布时间】:2012-08-08 02:51:18
【问题描述】:

我读过一本书:

..characters 只是底层的 16 位无符号整数。这意味着您可以分配一个数字文字,假设它适合无符号的 16 位范围(65535 或更小)。

它给我的印象是我可以为字符分配整数,只要它在 16 位范围内。

可是我怎么能这样呢:

char c = (char) 80000; //80000 is beyond 65535.

我知道演员们施展了魔法。但幕后究竟发生了什么?

【问题讨论】:

    标签: char


    【解决方案1】:

    看起来它使用的是 int 值 mod 65536。以下代码:

    int i = 97 + 65536;
    char c = (char)i;
    System.out.println(c);
    System.out.println(i % 65536);
    char d = 'a';
    int n = (int)d;
    System.out.println(n);
    

    打印出 'a' 和 '97' 两次(a 是 ascii 中的字符 97)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-08-21
      • 2012-12-26
      • 2011-10-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多