似乎弱类型的定义(不要与动态类型混淆)是当两个值都是不同类型时,二元运算符可以工作。
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,即使它通常会被截断。Java是弱类型的吗?弱类型、自动装箱和扩大转换之间有什么区别?