is Java weak typed as this example demonstrates when compared with python?
我熟悉什么是强弱型。我也知道Java是强类型的。现在我学习了Python,它是一种强类型语言。但现在我看到Python比Java更"强"类型化。举例说明
1 2 3 4 5 6 7 8 |
没有错误,打印hello 4
在Python中
1 2 3 4 5 | >>> x="hello" >>> x+=4 Traceback (most recent call last): File"<stdin>", line 1, in <module> TypeError: cannot concatenate 'str' and 'int' objects |
所以这个例子演示了python是强类型的。除非在Hub下有Java,否则需要进行一些操作来将int转换为String,并执行String CONTAT。
Java仍然是强类型的,尽管您有示例。代码等价于
1 2 |
Java会将EDCOX1的0进制转换成字符串,然后执行字符串连接。这是语言功能。
然而,在python中,不能使用
这个例子不能证明Java不是强类型化的。在幕后进行的只是一个隐式字符串转换(jls,第5.1.11节)。
首先,转换到引用类型是为了从
如果你想再举一个有趣的例子,你可以在很多地方发现
因特+
将数字转换为字符串。程序员很懒惰,不想写
integer.toString(整数)
这会导致字符串转换和运行时无用的字符串串联。
这并不意味着Java不是强类型化的,只是所有的对象都需要有一个toString()方法,并且所有的原语都可以自动装箱和解压到它们的非原始的对应(INT-整数,长->长等等),实现ToString(),而"+"在Java中充当字符串连接。