Java sysout中的concat char给出了奇怪的输出?
当我运行下面的代码时,它不会给我被排除的输出。考虑下面的代码片段:Java sysout中的concat char给出了奇怪的输出?,java,char,concat,Java,Char,Concat,当我运行下面的代码时,它不会给我被排除的输出。考虑下面的代码片段: public class T { public static void main(String arg[]) { char a='3'; System.out.println(a+a); } } 这里的输出是:102 谁能给我解释一下吗?a+a被解释为一个公式 由于“3”的ascii值为51,51+51=102。它只是ascii值的总和。运算符应用隐式类型转换,将两个字符
public class T
{
public static void main(String arg[])
{
char a='3';
System.out.println(a+a);
}
}
这里的输出是:102
谁能给我解释一下吗?a+a被解释为一个公式
由于“3”的ascii值为51,51+51=102。它只是ascii值的总和。运算符应用隐式类型转换,将两个字符转换为数字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();
您可以将c+c视为51+51,因为它采用ascii码“3”。 如果要打印33,则可以尝试以下操作:
System.out.println(String
.格式(“%c+%c”,c,c)) 您应该查看一下的规范,顺便说一句,字符实际上是表示UTF-16的16位无符号整数(范围为000000-00007F,与ascii匹配)。