Java与Python中的"+"运算符

rok*_*rok 1 python java string

有人能解释为什么Java在以下示例中连接字符串和整数吗?

public class main {

    public static void main(String[] args) {
        System.out.println("test" + 5);
        System.out.println(5 + "5");
    }

}
Run Code Online (Sandbox Code Playgroud)

与Python的+运营商实现有什么不同.

在Python中,这提出了一个TypeError:

"5" + 5
Run Code Online (Sandbox Code Playgroud)

ars*_*jii 6

是什么让你觉得+应该以两种不同语言的相同方式行事?在Java中,当你有类似的东西时

System.out.println(5 + "5");
Run Code Online (Sandbox Code Playgroud)
55

正如您所见,执行字符串连接.Java语言的规范概述了这一点(参见JLS§15.18.1).相比之下,Python并没有强制像Java这样的类型(因此TypeError); 为了使字符串连接发生,两个操作数都+必须是字符串,这就是你需要的原因

>>> "5" + str(5)
'55'
Run Code Online (Sandbox Code Playgroud)

这在Python的规范中有概述(参见Python语言参考§5.6).没有普遍的规则,国家+必须跨语言以特定的方式行事:如果我想,我可以创建一种+执行减法的语言!

正如@Wooble 指出的那样,Perl +另一种方式表现:

$ perl -e 'print 5 + "5"; print "\n"'
10
Run Code Online (Sandbox Code Playgroud)