可能重复:
char and int in Java
AsicII表:http://www.asciitable.com
下面的代码打印出相应字符的Dec值,例如“123” - > 49 50 51
public void foo(String str)
{
for(int x = 0; x < str.length(); x++)
{
int temp = str.charAt(x);
System.out.println(temp);
}
}
但是我注意到java是一种强类型语言,这意味着每个东西都必须在编译时进行转换,但是为什么代码知道如何以及何时将char转换为AsicII表中正确的Dec值? 我搞乱了任何java /编程基础吗?
答案 0 :(得分:8)
char
只是一个无符号的16位数,因此它基本上是int
类型的一个子集,因此JVM可以毫不含糊地进行转换。
答案 1 :(得分:2)
Java是基于C制作的,C:chars的一个特征也代表了一个数字
作为标量类型,有一个问题: - 打印char将产生ascii char - 打印int将产生数字
还有一些关于upcast和downcast的细节(要转换为char的int,需要明确地完成,因为涉及一些截断)
示例:
long a = 1L; // a real long
long n = 5; // int, cast to long
int x = n; // (will raise an error)
int z = (int) n; // works fine
答案 2 :(得分:2)
char具有双重性格。
它是一个16位无符号整数数字类型,它使int赋值给一个非常自然的操作,涉及扩展原语转换,如果需要,编译器将插入的转换之一,而不需要显式转换。
这也是I / O和String操作表示字符的方式。