字符串联导致数值输出

时间:2013-09-16 20:48:04

标签: java character concatenation

在一种名为Java的编程语言中,我有以下代码行:

char u = 'U';
System.out.print(u + 'X');

此语句产生如下输出:

173

而不是

UX

我错过了什么吗?为什么不输出'UX'?谢谢。

5 个答案:

答案 0 :(得分:3)

在这种称为Java的语言中,添加两个字符,短路或字节is an int的结果。

因此,U(85)的整数值被加到X(88)的整数值,并得到整数值173(85 + 88)。

要修复:

您可能希望将u设为字符串。字符串加上 char 将是一个字符串,字符串加上一个字符串。

String u = "U"; // u is a string
System.out.print(u + 'X'); // string plus a char is a string

答案 1 :(得分:3)

因为您正在执行添加字符。在Java中,当您添加字符时,它们首先转换为整数。在您的情况下,U的ASCII码是85,X的代码是88。

然后打印总和,即173。

如果要连接字符,可以这样做,例如:

System.out.print("" + u + 'X');

现在+不再是char添加,它变成了字符串连接(因为第一个参数""是一个字符串)。

您还可以从字符中创建字符串:

char[] characters = {u, 'X'};
System.out.print(new String(characters));

答案 2 :(得分:0)

String u = "U";
System.out.print(u + "X");

而非char类型使用String类或StringBuilder

答案 3 :(得分:0)

将其中一个字符转换为字符串的另一种方法:

char u = 'U';
System.out.print(Character.toString(u) + 'X');

当您的变量属于char类型时,这种方式非常有用,原因很简单,您无法轻松将其重新声明为String

答案 4 :(得分:-1)

那种“Java语言”让我很开心。

快速搜索“java concatenate”(我建议你现在这样做,每次有问题时)都会发现大多数优秀的Java程序员讨厌使用+进行连接。即使你想要字符串连接时没有使用数字,就像你的代码一样,它也很慢。

似乎更好的方法是创建一个StringBuffer对象,然后为要连接到它的每个字符串调用它的append方法。见这里:http://www.ibm.com/developerworks/websphere/library/bestpractices/string_concatenation.html