3

我对强类型的理解是该语言不会进行隐式类型转换。但是,此代码将 char 转换为它的 ascii 值,然后使用该值。

static char x = 'j';
static int y = 7;

public static void main(String[] args){
    System.out.println(y+x);
}
4

3 回答 3

2

如果 Java 是强类型的,那么为什么这段代码会编译?

因为JLS是这么说的。在这种情况下,我们扩展了一个原始类型,一个 char 可以变成一个 int。然后我们可以添加两个整数并输出结果。如果需要,您可以将 int缩小回 char。

System.out.println((char) (y+x));
于 2015-11-27T15:48:12.087 回答
1

这与强类型或弱类型无关。您的代码是两个强类型变量之间的隐式转换示例 - acharint.

System.out.println(y+x)实际上被编译成System.out.println(y+(int)x);这样System.out.println(int arg0)被调用。

转换(int)x是将字符转换为其 ascii 值的原因,因为 Java 将字符存储为 UTF-16 值。

于 2015-11-27T13:54:39.263 回答
0

Java 是一种强类型编程语言,因为每个变量都必须用数据类型声明。一个变量在不知道它可以容纳的值范围的情况下无法开始生命,并且一旦声明,变量的数据类型就不能改变。

例子:

允许以下声明,因为具有“hasDataType”的变量被声明为布尔数据类型:

 boolean hasDataType;

在它的余生中,hasDataType 只能有一个值 true 或 false。

以及为什么在您的示例中将 char 转换为数字。

System.out.println(y+x);

你可以看看这个例子

于 2015-11-27T13:49:26.867 回答