在 java 中将 int 转换为 char
下面是一个代码片段,
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,我该怎么办?
下面是一个代码片段,
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,我该怎么办?
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
我的答案类似于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,并且比使用方法然后按方法减去数字更智能,更好。int
char
.toString()
.charAt()