在Java中,您必须指定变量必须是哪种类型。
然后确保无法为变量分配不同类型的值。 尝试分配不同的值会导致错误:“ String无法转换为int。”。例如。
检查如何运作?
存储有关变量类型的信息在哪里?
在像JavaScript这样的弱类型语言中,将字符串分配给当前数字不会导致错误。
它在那里如何运作?
据我所知,确定值存储在内存中的方式类型? 因此:变量如何在弱类型语言中改变它?存储方式不再匹配。
答案 0 :(得分:1)
Java经历了一个编译过程。在此过程中,编译器会验证变量的类型是否一致。 Javascript不是一种编译语言。没有预运行时过程来验证变量的类型。此外,javascript是一种动态类型语言,因此通过设计,您不必担心变量的类型。 你可以在这里读更多关于它的内容: Dynamic type languages versus static type languages
答案 1 :(得分:1)
这有两个方面 - 编译时和运行时检查。
编译代码时,可以检查任何明显不正确的分配。编译器可以访问源以及有关为每个变量声明的类型的所有信息,因此这非常简单。
还有其他需要在运行时检查的情况,例如当您尝试将变量强制转换为其他类型时。基本上,Java运行时存储一些标头/元数据以及每个对象,其中包括有关其类的信息。该元数据的具体内容和结构可以在不同版本的Java之间变化。但无论如何,可以检查此信息,如果您尝试进行的转换无效,则会抛出ClassCastException。
答案 2 :(得分:1)
Java是一种严格类型化的语言,我们需要决定变量的类型,它可以是int,float或引用类型(如Object,String,其他类),以保持实现简单易懂。然而,Java提供了类型转换的概念,因为我们可以将变量转换为另一个符合条件的类型,并且还有像parseInt()这样的包装器。 e.g。
Object o = "Something";
String s = (String) o;
由于其严格的类型性质,Java编译器不允许我们为具有不同类型的变量赋值。
每个Java对象都存储一个klass
命名标志,以引用其类级别对象。