为什么我们允许将char赋给java中的int?

use*_*840 6 java

可能重复:
Java中的char和int

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);
            }
        }
Run Code Online (Sandbox Code Playgroud)

但我注意到java是一种强类型语言,这意味着每一件事都必须在编译时进行转换,但是为什么代码知道如何以及何时将char转换为AsicII表中正确的Dec值?我搞乱了任何java /编程基础吗?

mpr*_*vat 8

A char只是一个无符号的16位数,因此它基本上是该int类型的一个子集,因此JVM可以毫无歧义地进行转换.