将char传递给带有int参数的方法

Hus*_*awi 8 java type-conversion

以下代码的输出是123因为substring从beginIndex到EndIndex - 1.然而,我很惊讶char这里被理解为3(int),因为substring需要两个整数.这背后的概念是什么?

String x = "12345";
char a = 3;
x = x.substring(0, a);
System.out.println(x);
Run Code Online (Sandbox Code Playgroud)

NPE*_*NPE 12

这一直回到C,其char本质上是一个窄整数类型,并int在必要时隐式转换为.

在Java中,这在技术上称为"扩展原始转换",并在JLS的5.1.2节介绍.