Java如何检查指定的值是否正确(关于类型)?

How does Java check if an assigned value is correct (in regard to the type)?

在爪哇中,必须指定变量必须是哪种类型。

然后确保不能将不同类型的值赋给变量。尝试分配不同的值会导致错误:"字符串不能转换为int。"例如。

支票怎么办?

变量类型的信息存储在哪里?

在弱类型语言(如javascript)中,将字符串赋给当前数字不会导致错误。

它在那里是如何工作的?

据我所知,确定值在内存中的存储方式?结果:一个变量如何在弱类型语言中改变它?存储方式不再匹配。


Java是一种严格类型化的语言,在这里我们需要决定变量的类型,它可以是int、浮点或引用类型(像对象、字符串、其他类),它是为了使实现简单易懂。然而,Java提供了类型转换的概念,因为我们可以将变量转换为另一个合格类型,并且还存在类似于PARSETIN()的包装器。例如

1
2
Object o ="Something";
String s = (String) o;

由于其严格的类型性质,Java编译器不允许我们为不同类型的变量赋值。

每个Java对象都存储一个EDCOX1×0命名标志来引用它的类级对象。


这有两个方面-编译时和运行时检查。

编译代码时,可以检查是否有明显不正确的赋值。编译器可以访问源代码以及您为每个变量声明的类型的所有信息,所以这非常简单。

还有一些其他情况需要在运行时检查,例如当您尝试将变量强制转换为其他类型时。基本上,Java运行时与每个对象一起存储一些头/元数据,其中包含关于它的类的信息。该元数据的具体内容和结构可以在不同版本的Java之间有所不同。但在任何情况下,都可以检查这些信息,如果您试图进行的强制转换无效,则会抛出ClassCastException。


Java经历编译的过程。在此过程中,编译器将验证变量的类型是否一致。javascript不是编译语言。没有运行前进程来验证变量的类型。另外,javascript是一种动态类型的语言,因此在设计时,您不必担心变量的类型。您可以在这里阅读更多信息:动态类型语言与静态类型语言