在 java 中将 int 转换为 char

2022-08-31 07:12:29

下面是一个代码片段,

int a = 1;
char b = (char) a;
System.out.println(b);

但我得到的是空输出。

int a = '1';
char b = (char) a;
System.out.println(b);

我将得到1作为我的输出。

有人能解释一下吗?如果我想像第一个片段中那样将int转换为char,我该怎么办?


答案 1
int a = 1;
char b = (char) a;
System.out.println(b);

将使用 Unicode 代码点 1 打印出字符(标题开头 char,不可打印;请参阅此表:C0 控件和基本拉丁语,与 ASCII 相同)

int a = '1';
char b = (char) a;
System.out.println(b);

将使用 Unicode 码位 49 打印出字符(一个对应于 “1”)

如果要转换数字 (0-9),可以向其添加 48 并强制转换,或类似的内容。Character.forDigit(a, 10);

如果要将一个被视为 Unicode 码位的代码点转换为 Unicode 码位,则可以使用 Character.toChars(48) 等。int


答案 2

我的答案类似于jh314的答案,但我会解释得更深一些。

在这种情况下,您应该做的是:

int a = 1;
char b = (char)(a + '0');
System.out.println(b);

在这里,我们使用“0”,因为字符实际上由ASCII值表示。“0”是一个字符,由值 48 表示。

我们键入并为了将这些加起来,Java将“0”转换为其ASCII值,该值为48,a为1,因此总和为49。然后我们做的是:(a + '0')

(char)(49)

我们投向 .相当于 49 的 ASCII 是“1”。您可以通过这种方式将任何数字转换为char,并且比使用方法然后按方法减去数字更智能,更好。intchar.toString().charAt()


推荐