Java如何检查分配的值是否正确(关于类型)?
在Java中,您必须指定变量必须是哪种类型。Java如何检查分配的值是否正确(关于类型)?
然后确保不能为变量分配不同类型的值。 尝试分配不同的值会导致错误:例如,“字符串不能转换为int。”。
检查工作如何?
哪里有关于变量类型的信息存储?
在像JavaScript这样的弱类型语言中,将字符串分配给当前编号将不会导致错误。
它是如何工作的?
据我所知,确定类型值的方式存储在内存中? 因此:一个变量如何在弱类型语言中改变它?存储的方式不再匹配。
Java经历了一个编译过程。在此过程中,编译器验证变量的类型是否一致。 JavaScript不是一种编译语言。没有运行前流程来验证变量的类型。更重要的是,JavaScript是一种动态类型语言,因此通过设计,您不必担心变量的类型。 您可以在这里阅读更多关于它的信息: Dynamic type languages versus static type languages
有两个方面 - 编译时和运行时检查。
编译代码时,可以检查是否有明显不正确的赋值。编译器可以访问源和所有关于你为每个变量声明的类型的信息,所以这很简单。
还有其他一些需要在运行时检查的情况,例如当您尝试将变量转换为其他类型时。基本上,Java运行时存储一些标题/元数据以及每个对象,其中包括有关它的类的信息。这个元数据的具体内容和结构可以在不同版本的Java之间有所不同。但是在任何情况下,都可以检查这些信息,如果您试图创建的强制类型无效,则会抛出ClassCastException。
Java是一种严格类型的语言,我们需要确定变量的类型,它可以是int,float或引用类型(如Object,String,其他类),这样可以使实现简单易懂。然而,Java提供了类型转换的概念,因为我们可以将一个变量转换为另一个符合条件的类型,并且还提供了像parseInt()这样的包装器。例如
Object o = "Something";
String s = (String) o;
由于其严格的类型性质的Java编译器不允许我们一个值分配给不同类型的变量。
每个Java对象都存储一个klass
命名标志来引用它的Class级别对象。
也许谷歌更多? https://docs.oracle.com/javase/specs/jls/se7/html/jls-4.html – TungstenX
@Kayaman:变量*和*对象都不能在Java中改变它的类型 - 但这些是独立的东西。 –
@JonSkeet事实上,这有点糟糕。 – Kayaman