下面的代码片段烧焦,转换int在Java的
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在Java的
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);
将打印出ascii值为1的char(不可打印的开始标题字符)。
int a = '1';
char b = (char) a;
System.out.println(b);
将打印出的字符与ASCII值49(一个对应于“1”)
如果要转换数字(0-9),您可以添加48到它和演员阵容,或类似Character.forDigit(a, 10);
。
如果你想转换一个int
ascii值,你可以使用Character.toChars(48)
为例。
在java a char 是 int。您的第一个片段将以默认字符编码方案(可能是Unicode)打印出与值1相对应的字符。 Unicode字符U + 0001是非打印字符,这就是您看不到任何输出的原因。
如果你想打印出字符'1',你可以在你使用的编码方案中查找'1'的值。在Unicode中,这是49(与ASCII相同)。但是这只适用于数字0-9。
你可能会使用一个字符串,而不是一个字符,并使用会更好Java的内置toString()
方法:
int a = 1;
String b = toString(a);
System.out.println(b);
这将工作无论你的系统编码,并为多位数工作。
对不起,但一个字符不是int,因为它是由不同数量的字节组成的(快速参考[char-int representation - stackoverflow](http://stackoverflow.com/questions/17166393/byte-char-int -in-java的位表示))。 char可以用数字表示,你是对的,但它不是一个整数。 – morels
另外,我想你可能会发现第二行应该是“String b = Integer.toString(a);” – Faulty
char数据类型在[java.lang.Character](https://docs.oracle.com/javase/8/docs/api/java/lang/Character.html)中定义良好,并且与int的关系和unicode代码点和代码单元。 – Ian
int a = 1;
char b = (char) a;
System.out.println(b);
霍拉,以及我经历了同样的问题,但我做了什么是下面的代码。
int a = 1
char b = Integer.toString(a).charAt(0);
System.out.println(b);
用这个你可以得到十进制值作为字符类型。我用索引为0的charAt(),因为该字符串中唯一的值是'a',并且如您所知,该字符串中的'a'的位置从0开始。
对不起,如果我的英语没有很好地解释希望它能帮助你。
我的答案与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'。你可以用这种方式将任何数字转换为字符,比使用.toString()方法,然后通过.charAt()方法减去数字更聪明更好。
好像你正在寻找Character.forDigit
方法:
final int RADIX = 10;
int i = 4;
char ch = Character.forDigit(i, RADIX);
System.out.println(ch); // Prints '4'
还有可以从一个字符转换回为int的方法:
int i2 = Character.digit(ch, RADIX);
System.out.println(i2); // Prints '4'
注意,通过改变RADIX
您还可以支持十六进制(基数16)和任何基数高达36(或Character.MAX_RADIX
,因为它也被称为)。
@ProgrammingNub定义“int的值”。你不想让它打印数字4吗?或者你想打印int的Ascii值,以便'65'打印'A'?因为我的答案显示了这个问题要求的预期行为。看到https://ideone.com/09LAFR –
没有人在这里回答真正的“问题”:你正在将int转换为char;在ASCII表中,01的十进制值是“开始标题”,一个非打印字符。尝试查找一个ASCII表并将33和7E之间的整数值转换;那会给你看角色。
如果你想一个字符转换成其相应的整数,你可以这样做:
int a = (int) 'a';
char b = (char) a;
System.out.println(b);
这是因为在ASCII有不能正常打印一些项目。
例如,数字97到122是对应于小写字母a到z的整数。
对不起,但你只是复制粘贴旧的答案... – Miki
当你键入投整数烧焦它会返回INT的ASCII值(一旦经过ASCII表更好地理解)
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](http://www.fileformat.info/info/unicode/char/0044/index.htm)。 System.out会将文本的编码更改为默认编码(可能与程序运行的终端/控制台相匹配)。 println需要一个字符并尝试对其进行编码。由于char是一个完整的代码点,它可以尝试。由于U + 0044几乎是所有字符集中的一个字符,所以应该成功地将它送到未加入的终端。与ASCII无关。 –
,如果你想打印基于ASCII字符在他们的ascii代码上,不想超越(比如unicode字符),你可以将你的变量定义为一个字节,然后使用(char)转换。即:
public static void main(String[] args) {
byte b = 65;
for (byte i=b; i<=b+25; i++) {
System.out.print((char)i + ", ");
}
BTW,对于字母的ASCII码 'A' 是65
如果我们谈论的是类类型 - 不是基本类型,下面的技巧有许多工作要做:
Integer someInt;
Character someChar;
someChar = (char)Integer.parseInt(String.valueOf(someInt);
public class String_Store_In_Array
{
public static void main(String[] args)
{
System.out.println(" Q.37 Can you store string in array of integers. Try it.");
String str="I am Akash";
int arr[]=new int[str.length()];
char chArr[]=str.toCharArray();
char ch;
for(int i=0;i<str.length();i++)
{
arr[i]=chArr[i];
}
System.out.println("\nI have stored it in array by using ASCII value");
for(int i=0;i<arr.length;i++)
{
System.out.print(" "+arr[i]);
}
System.out.println("\nI have stored it in array by using ASCII value to original content");
for(int i=0;i<arr.length;i++)
{
ch=(char)arr[i];
System.out.print(" "+ch);
}
}
}
请提供解释,而不仅仅是代码转储。 –
尽管这段只有代码的帖子可能会回答这个问题,但请为此解释原因。这将有助于未来的用户评估他们的情况。 –
确保整数值是字母/字符的ASCII值。
如果没有,然后让它。
for e.g. if int i=1
然后添加64到它,使之成为 'A' 65 = ASCII值 然后使用
char x = (char)i;
print x
// 'A' will be printed
“*转换一个int为char *?” 也许'B =(炭)('0'+ a)',但只适用于'0 <= a <= 9'。 – johnchen902
十进制值01是非打印字符;它工作正常。 – apraetor