似乎弱类型的定义(不要与动态类型混淆)是当二者都是不同类型时,二元运算符可以工作。弱分类,自动装箱,扩大转换有什么区别?
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弱类型?弱分类,自动装箱和扩大转换之间有什么区别?
你从哪里得到这个定义?这对我来说似乎很奇怪。术语“强”和“弱”在我的经验中通常不是很有用,但我绝对不会像你在这里那样使用它们。 – 2013-04-10 20:25:57
@JonSkeet,你会如何定义它? – Dog 2013-04-10 20:29:56