sysout中的concat char给出了奇怪的输出?

时间:2012-07-11 09:27:43

标签: java char concat

当我运行以下代码时,它不会给我输出我已被排除的内容。请考虑以下代码段:

public class T
{
    public static void main(String arg[])
    {
        char a='3';
        System.out.println(a+a);
    }
}

这里的输出是:102

可以请任何人向我解释一下吗?

4 个答案:

答案 0 :(得分:4)

+运算符应用隐式类型转换,将两个字符转换为数字ASCII表示形式,即51.

所以表达式

'3'+'3'

也可以被视为

51 + 51

这是102。

我假设你想拥有的是结果"33",它不再是一个字符串而是一个字符串。为此,您可以简单地将表达式的结果隐式转换为字符串:

char c = '3';
string s = "" + c + c;

另一种可能性是促进StringBuilder类:

char c = '3';
String s = new StringBuilder().append(c).append(c).toString();

答案 1 :(得分:0)

a + a被解释为公式。

因为'3'的ascii值是51,51 + 51 = 102。

答案 2 :(得分:0)

这只是ascii值的总和

答案 3 :(得分:0)

你可以看到c + c为51 + 51,因为它的ascii代码为'3'。 如果你想打印33,那么你可以试试这个:

System.out.println(String

.format(“%c +%c”,c,c));