【问题标题】:Casting int to char in Java在Java中将int转换为char
【发布时间】:2014-05-02 11:04:12
【问题描述】:

我正在寻找一个直截了当的答案,但似乎找不到。

我只是想看看以下内容是否有效。我想把整数 7 变成字符 '7'。是否允许:

int digit = 7;
char code = (char) digit; 

提前感谢您的帮助!

【问题讨论】:

  • Integer 与 int 不同,Character 与 char 不同。也试试看它是否有效。
  • (char) ('0' + digit) 可以工作
  • 只需自己尝试并将结果输出到控制台即可回答此问题。

标签: java casting integer character


【解决方案1】:

不。 char '7' 可以通过以下方式从 int 7 检索:

 int digit = 7;
 char code = Integer.toString(digit).charAt(0);
 code = Character.forDigit(digit, 10);

【讨论】:

    【解决方案2】:

    允许这种转换,但结果不会是您所期望的,因为char 7 is the bell character whereas '7' is 55 (0x37)。因为数字字符是按顺序排列的,从'0' 开始到48 (0x30),只需添加'0',然后将结果转换为char

    char code = (char) (digit + '0');
    

    您也可以看看Unicode characters,其中可打印的ASCII字符是相同的代码。

    【讨论】:

    • 啊,既然有 Unicode 而 Java 有 Unicode,为什么还要指向 ASCII? :p
    • 看看我的回答,为什么引用 ascii 不是一件好事
    【解决方案3】:

    '7' is Unicode code point U+0037.

    由于它是Basic Multiligual Plane 中的一个代码点,并且由于char 是一个UTF-16 代码单元,并且该平面中的Unicode 代码点与UTF-16 代码之间存在一对一的映射单位,你可以依靠这个:

    (char) ('0' + digit)
    

    不要将'7' 视为ASCII 55,因为这会妨碍对char 的良好理解...有关更多详细信息,请参阅here

    【讨论】:

      【解决方案4】:

      如果数字在 0 到 9 之间:

      int digit = 7;
      char code = (char)(((int)'0')+digit);
      

      【讨论】:

      • 无需将'0' 显式扩展为int
      【解决方案5】:

      做起来更简单

      String s = "0" + digit;
      char t = s.charAt(0);
      

      【讨论】:

      • 这可能不是你想要的,除非你想要的是每次都得到 char '0'
      猜你喜欢
      • 2013-08-01
      • 2010-10-24
      • 2013-10-14
      • 2013-12-11
      • 1970-01-01
      • 2013-05-13
      • 2019-04-05
      • 2019-03-15
      相关资源
      最近更新 更多