由于java中的每个类都是Object的子类,并且java中的变量本身不是对象,而是对象引用,为什么java类型规范是必需的,当Object类型可以隐式时?唯一可能的时候是使用简单数据类型。
答案 0 :(得分:4)
如果变量的类型为Object
,编译器将不允许您将该变量用作任何其他类型(除非您将其转换)。
这称为类型安全。
例如:
Object str = "abc";
s.toUpppercase(); //Compiler error
答案 1 :(得分:1)
好。 Java之所以这样做是因为..这就是语言的定义方式。 这可以归结为语言设计时(近20年前)被认为是良好的实践,并且还具有易于开发的编译器。
Scala是一种与Java密切相关的语言(在同一JVM上运行),在大多数情况下不需要显式类型标识符。 缺点是scala编译器速度要慢得多(其中包括其他原因)。
答案 2 :(得分:0)
答案可能是Java是一种面向对象的语言,用于大型项目并由合理的公司创建。如此强大的打字减少了潜在错误的数量,您可以在编译级别删除。
顺便说一句。
在.NET产品中,您有var x
这样的东西。但它只能在方法体中本地使用。但这只是开发人员的编译糖。所以Java只是强类型语言的一个例子。
答案 3 :(得分:-1)
Java是一种强类型语言。需要这些类型才能在编译时编译代码并验证类型兼容性。
弱类型语言没有类型。例如,当您在JavaScript中说var x
时,您只需定义变量。然后可以在那里分配任何类型的值。这意味着,例如,如果您的代码有错误并且您将字符串分配给此变量,然后尝试将此变量除以2(y = x / 2
),则脚本将在运行时失败。 Java不允许您编译此类代码。
原则是:在开发过程中,bug会花费x,在QA期间会花费x * 10,如果到达生产,则需要x * 100。编译器和强类型语言允许减少到达QA的(愚蠢)错误的数量,从而使软件开发更容易,更快速和更便宜。