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

Geo*_*rge 5 java types casting weak-typing strong-typing

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

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

public static void main(String[] args){
    System.out.println(y+x);
}
Run Code Online (Sandbox Code Playgroud)

Abd*_*hak 0

Java 是一种强类型编程语言,因为每个变量都必须使用数据类型进行声明。如果不知道变量可以保存的值的范围,则变量无法开始生命,并且一旦声明变量,变量的数据类型就无法更改。

例子:

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

 boolean hasDataType;
Run Code Online (Sandbox Code Playgroud)

在其余生中,hasDataType 只能具有 true 或 false 值。

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

System.out.println(y+x);
Run Code Online (Sandbox Code Playgroud)

你可以看一下这个例子

  • 您在这里定义的是静态类型与动态类型。Op 正确地指的是弱类型与强类型。你的回答与他/她的问题完全不同 (7认同)