【问题标题】:Adding char and int添加 char 和 int
【发布时间】:2012-05-08 16:06:21
【问题描述】:

据我了解,char 是单个字符,即字母、数字、标点符号、制表符、空格或类似的东西。因此,当我这样做时:

char c = '1';
System.out.println(c);

输出 1 正是我所期望的。那么为什么当我这样做时:

int a = 1;
char c = '1';
int ans = a + c;
System.out.println(ans);

我最终得到输出 50

【问题讨论】:

标签: java char int


【解决方案1】:

你得到它是因为它添加了字符的ASCII value。您必须先将其转换为 int。

【讨论】:

    【解决方案2】:

    数字 1 是 ASCII 代码 49。编译器正在对您的请求执行它可以做的唯一明智的事情,并将类型转换为 int。

    【讨论】:

    • 只是添加参考,尽管您也可以要求编译器生成此表asciitable.com
    【解决方案3】:

    您最终得到 out of 50,因为您在以下行中告诉 Java 将加法的结果视为 int

    int ans = a + c;
    

    您将 ans 声明为 char,而不是 int

    像这样:

    final int a = 1;
    final char c = '1';
    final char ans = (char) (a + c);
    System.out.println(ans);
    

    【讨论】:

      【解决方案4】:

      因为您将 c (1) 的值添加到 'a' 的 unicode 值,即 49。前 128 个 unicode 点值与 ASCII 相同,您可以在此处找到:

      http://www.asciitable.com/

      注意 Chr '1' 是 12 月 49 日。其余的 unicode 点在这里:

      http://www.utf8-chartable.de/

      【讨论】:

        【解决方案5】:

        char 是伪装的 int。 char 通过将字符编码为 int 来表示字符。例如,'c' 编码为 49。当你将它们加在一起时,你会得到一个 int,它是 char 的代码和 int 的值之和。

        【讨论】:

        • 不是'伪装的int',而是整数(整数)值。
        • @goldilocks 你所说的正是我的意思。
        • 好的,但是(对 nitpick ;/)int 是 java 类型,char 不是 int 类型的伪装。它是一个字符,但它确实有一个 integer 值(int 也是如此)。
        【解决方案6】:

        '1' 是一个数字,而不是数字,并以 ASCII 编码为值 49。

        Java 中的字符可以提升为 int,所以如果你要求将类似 1 的 int 添加到类似 '1' 的 char(别名 49)上,则更窄的类型 char 被提升为 int,得到 49,+ 1 => 50.

        请注意,每个非数字字符都可以以相同的方式添加:

        'a' + 0 = 97
        'A' + 0 = 65
        ' ' + 0 = 32
        

        【讨论】:

          【解决方案7】:

          'char' 实际上只是一个两字节的无符号整数。

          '1'1 的值非常不同。 '1' 被编码为两字节值 49。

          “字符编码”是您要研究的主题。或者来自 Java 语言规范:http://docs.oracle.com/javase/specs/jls/se7/html/jls-4.html#jls-4.2.1

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2018-10-08
            • 2012-12-21
            • 2017-03-21
            • 1970-01-01
            • 2020-11-03
            • 2016-03-07
            • 1970-01-01
            相关资源
            最近更新 更多