<分区>
似乎弱类型(不要与动态类型混淆)的定义是当两个值是不同类型时二元运算符可以工作。
Python 程序员争辩说 Python 是强类型的,因为 1+"hello"
会失败,而不是默默地做其他事情。相比之下,其他通常被认为是弱类型的语言(例如 PHP、JavaScript、Perl)将默默地转换一个或两个操作数。例如,在 JavaScript 中,1+"hello"
-> "1hello"
,而在 Perl 中,1+"hello"
-> 1
,但是 1+"5"
-> 6
。
现在,我的印象是 Java 被认为是一种强类型语言,但自动(取消)装箱和扩大转换似乎与此相矛盾。例如,1+new Integer(1)
-> 2
, hello+"1"
-> "hello1"
>、'A'+1
-> 66
和 long 可以自动转换为 float,即使它通常会被 chop 。 Java 是弱类型的吗?弱类型、自动装箱和扩大转换之间有什么区别?