2

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

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

此语句产生如下输出:

173

代替

UX

我错过了什么吗?为什么不输出“UX”?谢谢你。

4

5 回答 5

3

在这种称为 Java 的语言中,添加两个 chars、shorts 或 bytes 的结果是一个 int

因此,将U(85) 的整数值与X(88) 的整数值相加,得到173(85+88) 的整数值。

修理:

您可能想要制作u一个字符串。一个字符串加一个字符将是一个字符串,一个字符串加一个字符串也是如此。

String u = "U"; // u is a string
System.out.print(u + 'X'); // string plus a char is a string
于 2013-09-16T20:50:11.637 回答
3

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

然后打印总和,即 173。

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

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

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

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

char[] characters = {u, 'X'};
System.out.print(new String(characters));
于 2013-09-16T20:50:48.247 回答
0
String u = "U";
System.out.print(u + "X");

而不是char类型使用String类或StringBuilder

于 2013-09-16T20:51:51.847 回答
0

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

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

当您的变量char有充分的理由属于类型并且您不能轻易将其重新声明为String.

于 2013-09-16T21:32:21.563 回答
-1

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

快速搜索“java concatenate”(我建议您现在以及每次遇到问题时都这样做)显示大多数优秀的 Java 程序员讨厌使用+for 连接。即使在您想要字符串连接时不以数字形式使用它,就像在您的代码中一样,它也很慢。

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

于 2013-09-16T21:01:57.407 回答