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

时间:2013-01-15 17:09:21

标签: java

  

可能重复:
  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 /编程基础吗?

3 个答案:

答案 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操作表示字符的方式。