以下是一段代码片段,
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 code point 1 的字符(起始标头字符,不可打印; 参见此表:C0控制字符和基本拉丁字母,与ASCII相同)
int a = '1';
char b = (char) a;
System.out.println(b);
Character.forDigit(a, 10);
的方法。int
转换,例如,您可以使用Character.toChars(48)
。b3
而不是101
,您需要使用如下代码:System.out.println('b' + "3");
。除了使用printf之外,还有其他的方法吗?当然可以,例如使用StringBuilder类来连接字符和字符串:System.out.println(new StringBuilder().append('b').append(3).toString());
。 - Asif MushtaqCharacter.toChars
操作的是 Unicode 代码点,而不是 ASCII 值。如果你只是将 int 强制转换为 char,则仅对 BMP 获取相同结果。 - weaknespase我的答案与jh314的答案类似,但我会解释地更深入一些。
在这种情况下,你应该做的是:
int a = 1;
char b = (char)(a + '0');
System.out.println(b);
在这里使用'0',因为字符实际上是由ASCII值表示的。'0'是一个字符,它的值为48。
我们输入了(a + '0')
,为了将它们相加,Java 将'0'转换为其ASCII值,即48,而a是1,所以和为49。然后我们做的是:
(char)(49)
我们将int
转换为char
。 49的ASCII等效值为'1'。您可以使用此方法将任何数字转换为char,并且比使用.toString()
方法然后使用.charAt()
方法减去数字更聪明、更好。
看起来你正在寻找Character.forDigit
方法:
final int RADIX = 10;
int i = 4;
char ch = Character.forDigit(i, RADIX);
System.out.println(ch); // Prints '4'
还有一种方法可以将char转换回int:
int i2 = Character.digit(ch, RADIX);
System.out.println(i2); // Prints '4'
请注意,通过更改 RADIX
,您还可以支持十六进制(基数16)和任何基数高达36(或者也称为Character.MAX_RADIX
)。
65
打印为A
?因为我的答案针对该问题的要求打印了预期的行为。请参见https://ideone.com/09LAFR。 - Simon Forsbergint a = 1;
char b = (char) a;
System.out.println(b);
嗨,我也遇到了同样的问题,但我所做的是以下代码。
int a = 1
char b = Integer.toString(a).charAt(0);
System.out.println(b);
使用这个方法,您可以将十进制值作为char类型获得。我使用charAt()和索引0,因为该字符串中唯一的值是'a',并且正如您所知,'a'在该字符串中的位置从0开始。
如果我的英语没有很好地解释清楚,对不起,希望它能帮到您。
如果您希望将其打印为“1”或“a”。
如果您希望以“1”作为输入:
int a = 1;
char b = (char)(a + '0');
System.out.println(b);
int a = 1;
char b = (char)(a-1 + 'a');
System.out.println(b);
Java可以将ASCII值转换为字符 :)
int a = 1;
char b = (char) (a + 48);
char b = '2';
int a = b = 50;
int a=68;
char b=(char)a;
System.out.println(b);//it will return ascii value of 68
//output- D
char
是一个 UTF-16 代码单元。68 作为一个 UTF-16 代码单元是唯一需要表示 Unicode 码点 U+0044 的代码单元。System.out 将文本的编码更改为默认编码(可能与程序运行的终端/控制台匹配)。println 接受一个 char 并尝试对其进行编码。由于 char 是一个完整的代码点,因此可以尝试。由于 U+0044 是几乎所有字符集中的字符,因此应该能够成功将其传输到终端而不会出现乱码。这与 ASCII 无关。 - Tom BlodgetInteger someInt;
Character someChar;
someChar = (char)Integer.parseInt(String.valueOf(someInt));
首先,将 int
(或其他类型)转换为 String
,
int a = 1;
String value = String.valueOf(a);
char newValue = value.charAt(0);
System.out.println(newValue);
b = (char)('0' + a)
,但是只适用于0 <= a <= 9
。 - johnchen902