似乎弱類型的定義(不要與動態類型混淆)是當二者都是不同類型時,二元運算符可以工作。弱分類,自動裝箱,擴大轉換有什麼區別?
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